[ casperns2 @ 20.01.2014. 21:48 ] @
Pozdrav , zadatak je da korisnik pogadja broj koji je program slucajno izabrao do 1000 . Posle svakog odgovora program ce pomagati javljajuci da li je broj veci ili manji od zamisljenog.

E sad, napisao sam kod koji obavlja zadatak i nema gresaka , zanima me ako je neko raspolozen da kaze da li sam izabrao pravu petlju i da li je OK nacin na koji je napisan kod ili je moglo jednostavnije na laksi nacin??? Bitno mi je da nisam komplikovao, jer zadatak nema resenje niti je navedeno na koji nacin da se uradi, meni je ovako bilo najlakse...

Code:
import java.util.*;
class Pogadjanje
{
    public static void main(String[] args)
 {
      ConsoleReader i=new ConsoleReader(System.in);
      Random rand=new Random();
       int brojac=1;
       int x=rand.nextInt(1000)+1;
       System.out.println("Koji broj je racunar zamislio?");
       int n=i.readInt();
    while(x!=n){
       if (n<x)
            System.out.println("Nije tacno, broj " + n+ " je manji od zamisljenog broja, pokusajte ponovo");
          else
            System.out.println("Nije tacno, broj " + n+ " je veci od zamisljenog broja,pokusajte ponovo");
            System.out.println("Koji broj je racunar zamislio?");
        n=i.readInt();
        brojac++;
    }
   System.out.println("BRAVO , pogodili ste! Zamisljeni broj je "+x+ " . Pogodili ste posle " + brojac+" pokusaja.");
 }
}
[ bloker @ 21.01.2014. 08:34 ] @
Ja bih koristio do - while petlju čime bih izbjegao dva puta ovo int n=i.readInt();

Code:

import java.util.*;
class Pogadjanje
{
    public static void main(String[] args)
 {
      ConsoleReader i=new ConsoleReader(System.in);
      Random rand=new Random();
       int brojac=0;
       int x=rand.nextInt(1000)+1;
    do{
       System.out.println("Koji broj je racunar zamislio?");
       int n=i.readInt();
       if (n<x)
            System.out.println("Nije tacno, broj " + n+ " je manji od zamisljenog broja, pokusajte ponovo");
          else
            System.out.println("Nije tacno, broj " + n+ " je veci od zamisljenog broja,pokusajte ponovo");
        brojac++;
       }
    while(x!=n);
   System.out.println("BRAVO , pogodili ste! Zamisljeni broj je "+x+ " . Pogodili ste posle " + brojac+" pokusaja.");
 }
}
[ djoka_l @ 21.01.2014. 08:51 ] @
else deo nije dobar, jer se u njega ulazi pod uslovom n>=x, tj. može biti da je n=x, a program bi javio prvo da je broj veći od zamišljenog broja, a onda da je pogodak.
Umesto else dela, staviti još jedan if, sa uslovom n>x.
[ casperns2 @ 21.01.2014. 14:06 ] @
@ bloker , prvo kako sam pomislio je isto kao sto si ti napisao , cak sam i ispisao ceo kod bas kao sto je tvoj ali sam odustao od te varijante jer u tom slucaju ako bi iz prve pogodio tacan broj doslo bi do greske, ako bi n==x onda bi program ispisao else naredbu da je broj veci od zamisljenog sto nije tacno ako se pogodi iz prve , bar sam ja tako razumeo taj kod.

@djoka_l , mislim da nije bas tako kao sto mislis . U while je definisano da n nije jednako x , znaci da je vece ili manje i onda se prelazi na if naredbu. Ako je n=x onda je while uslov false i if naredba se nece ni izvrsavati vec odmah ispisati da je pogodjen zamisljeni broj.

U svakom slucaju hvala na savetima i predlozima, uvek je korisno prodiskutovati. Ako ima jos neko neki predlog rado bih pogledao...
[ djoka_l @ 21.01.2014. 14:16 ] @
Citat:
U while je definisano da n nije jednako x , znaci da je vece ili manje i onda se prelazi na if naredbu. Ako je n=x onda je while uslov false i if naredba se nece ni izvrsavati vec odmah ispisati da je pogodjen zamisljeni broj.


Nisi u pravu, while se izvršava POSLE if naredbe. U slučaju n=x, ulazi se u if, pa kako nije n<x izvršava se else deo if-a, pa tek posle toga se dolazi u while.

Recimo da je x=1

Program ispisuje:
Koji broj je racunar zamislio?
Ti unosiš broj 1.
Ulazi se u if i pošto nije tačno 1<1 program ispisuje:
Nije tacno, broj 1 je veci od zamisljenog broja,pokusajte ponovo
Onda program dolazi do while, pa pošto 1!=1 nije ispunjeno, izlazi iz do-while petlje i ispisuje
BRAVO , pogodili ste! Zamisljeni broj je 1 . Pogodili ste posle 1 pokusaja.
[ casperns2 @ 21.01.2014. 17:20 ] @
Izvini djoka_l , mislio sam da govoris da se u mom kodu koji sam napisao izvrsava if naredba i ako je while(false). Kod bloker-ovog koda slazem se da ce se program ponasati kao sto si napisao.