Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 28. 10. 2009 23:51

Kelyk
Příspěvky: 29
Reputace:   
 

Java - cyklusy

Dobrý den,
můžu poprosit o radu, nebo spíš potřebuju trošičku nakopnout...
Mám sestavit program, ve kterém načtu celé číslo a vytisknu všechny celočíselné dělitelé načteného čísla.
Nápad by byl - zkouším dělit od 1 do toho načteného čísla, ale nějak jsem se v tom zamotala...
Můžete mi prosím mrknout na zdroják? Díky moc
public static void main(String []args){
        int n; //zkoumané číslo
        int i=1; //čísla, jimiž postupně dělíme
    do{
    System.out.println("Zadej cislo");
    n=VstupDat.ctiInt();
    if(n/i==0)i++;
    System.out.println(i);
    }while (n/i!=0);
        }
    }

Offline

 

#2 29. 10. 2009 00:01 — Editoval plisna (29. 10. 2009 00:02)

plisna
Místo: Brno
Příspěvky: 1503
Reputace:   
 

Re: Java - cyklusy

1) predpokladam, ze nactes pouze jedno cislo a u nej pak vypises delitele - takze nacteni tohoto cisla bude vne cyklu
2) pro testovani, jestli je cislo n delitelne cislem i, je vhodne pouzit zbytek po deleni - pokud je to nula, pak i deli n. syntaxe: if((n % i) == 0) ...

Offline

 

#3 29. 10. 2009 00:22

Kelyk
Příspěvky: 29
Reputace:   
 

Re: Java - cyklusy

↑ plisna:
O.k., díky za doplnění.......
Ale problém je v tom, že to podmínku mám zřejmě špatně, protože když zadám např. 6, jako dělitele mi to vypíše jen 2.
Můžeš na to prosím ještě mrknout?
Díky

Offline

 

#4 29. 10. 2009 00:25

plisna
Místo: Brno
Příspěvky: 1503
Reputace:   
 

Re: Java - cyklusy

je tam chyba v podmince pro cyklus while, musi tam byt: do { ... } while(i <= n);

Offline

 

#5 29. 10. 2009 00:29

Kelyk
Příspěvky: 29
Reputace:   
 

Re: Java - cyklusy

↑ plisna:
Tato úprava mi hodí nekonečnou smyčku pro číslo, které není dělitelem......

Offline

 

#6 29. 10. 2009 00:34

plisna
Místo: Brno
Příspěvky: 1503
Reputace:   
 

Re: Java - cyklusy

neni mozne - hod sem cely tvuj kod

Offline

 

#7 29. 10. 2009 00:44

Kelyk
Příspěvky: 29
Reputace:   
 

Re: Java - cyklusy

↑ plisna:
public class KU3oprava {
    public static void main(String []args){
        int n; //zkoumané číslo
        int i=1; //čísla, jimiž postupně dělíme
    System.out.println("Zadej cislo");
    n=VstupDat.ctiInt();
    do{
    if((n % i) == 0)i++;
    System.out.println(i);
    }while (i<=n);
        }
    }

Offline

 

#8 29. 10. 2009 00:49

plisna
Místo: Brno
Příspěvky: 1503
Reputace:   
 

Re: Java - cyklusy

podminka v cyklu je chybna - pokud je cislo i delitelem, pak ho vypiseme. i inkrementujeme v kazde iteraci.

Code:

do{
    if((n % i) == 0) {
        System.out.println(i);
    }
    i++;
}while (i<=n);

Offline

 

#9 29. 10. 2009 00:56

Kelyk
Příspěvky: 29
Reputace:   
 

Re: Java - cyklusy

↑ plisna:
tak už jsem to předtím taky zkoušela, ale to mi vypisuje úplné nesmysly (např. pro 8 mi to vypíše 2,3,5,6,7,9)
Neměla bych tam zavést ještě jednu proměnou pro nějaký mezivýsledek -jenže vlastně pro jaký?......

Offline

 

#10 29. 10. 2009 01:05

plisna
Místo: Brno
Příspěvky: 1503
Reputace:   
 

Re: Java - cyklusy

moment, zkusim si to naprogramovat

Offline

 

#11 29. 10. 2009 01:11

plisna
Místo: Brno
Příspěvky: 1503
Reputace:   
 

Re: Java - cyklusy

opravdu nevim, proc ti to nefunguje, me to totiz funguje bezchybne. muj kod:

Code:

public static void main(String[] args) {
        // TODO code application logic here
        Scanner s = new Scanner(System.in);
        System.out.println("Zadej cislo: ");
        int n = s.nextInt();
        int i = 1;
        do {
            if ((n % i) == 0) {
                System.out.println(i);
            }
            i++;
        } while(i <= n);
    }

zadam-li napr. 20, tak program vypise 1, 2, 4, 5, 10, 20

Offline

 

#12 30. 10. 2009 11:04

Kelyk
Příspěvky: 29
Reputace:   
 

Re: Java - cyklusy

↑ plisna:
Díky moc za pomoc, nevím čím to bylo, ale dnes už mi to funguje - výsledek:
public class pokusKU3 {
    public static void main(String []args){
        int n; //zkoumané číslo
        int i=1; //čísla, jimiž postupně dělíme
        int odpoved;
    System.out.println("Zadej cislo");
    n=VstupDat.ctiInt();
    do{
    if ((n % i) == 0) {
    System.out.println(i);
    }
    i++;
    }while(i<=n);
        }
    }       
Musela jsem to upravit takto, protože se "scannerem" ještě pracovat neumím. Tak ještě jednou díky.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson