Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje
Uputstvo Članstvo Kalendar Današnje poruke Pretraži

Programiranje Programski jezici, tehnike, alatke...

 
 
Alatke vezane za temu Vrste prikaza
Stara 22.1.2011, 23:32   #1
Bolton
Član
 
Član od: 16.6.2006.
Lokacija: Surčin
Poruke: 434
Zahvalnice: 19
Zahvaljeno 117 puta na 89 poruka
Slanje poruke preko Skypea korisniku Bolton
Question do...while petlja sa 2 izraza (uslova)

Pomažem drugaru sa pripremom za kolokvijum iz C# (u pitanju je konzolna aplikacija) i naišao sam na jedan zadatak koji mi pravi problem, a on glasi:
"Generišu se slučajni brojevi 0-20. Potrebno je generisati brojeve sve dok se 5 ne pojavi ukupno dva puta, ili dok se bilo koji drugi broj ne pojavi uzastopno dva puta. Na kraju je potrebno ispisati na ekranu pod kojim uslovom je došlo do kraja programa."
OK, jasno mi je šta treba da se uradi. Ja sam rešio da koristim do...while petlju. Da dam objašnjenje kako sam zamislio da odradim ovaj zadatak:
Kod:
int broj = 0; // nasumicno izabran broj
int broj2 = 0; // broj razlicit od 5
int brojPonavljanja = 0; // broj ponavljanja broja 5
int brojOstalihPonavljanja = 0; // broj ponavljanja brojeva razlicitih od 5
do{
    broj = nasumicanBroj.Next(0, 20) + 1;
    Console.WriteLine("Izabran je broj " + broj); // ispisi koji je broj izabran
    Console.ReadLine();
    if (broj == 5){
    brojPonavljanja++; // inkrementiraj promenljivu (imace vrednost 1)
    if (brojOstalihPonavljanja == 1) // ako smo vec jednom pre broja 5 dobili broj != 5
     { 
      brojOstalihPonavljanja--; // resetuj vrednost promenljive na 0
      }
                }
      else if (brojOstalihPonavljanja == 0) // ako nismo 2 puta zaredom pronasli iste brojeve{ 
      broj2 = broj;
      brojOstalihPonavljanja++; // inkrementiraj promenljivu za 1
                }
      else if (brojOstalihPonavljanja == 1) // ako smo vec jednom dobili broj razlicit od 5{ 
               if (broj2 == broj){
               brojOstalihPonavljanja++; // ako je broj2 == broj onda inkrementiraj promenljivu za 1 (imace vrednost 2)
                }
                else{
                   brojOstalihPonavljanja--; // u suprotnom resetuj vrednost promenljive na 0
                    }
                }
            }
            while (brojPonavljanja < 2 || brojOstalihPonavljanja < 2);
Console.WriteLine("Program se zavrsio zato sto se broj {0} pojavio 2 puta",(brojPonavljanja == 2)?broj:broj2);
Console.ReadLine();
Problem je while uslov (brojPonavljanja < 2 || brojOstalihPonavljanja < 2). Stvar je u tome što moram izvršiti proveru da li se broj 5 pojavio ukupno dva puta (i zato koristim promenljivu brojPonavljanja), a za ostale brojeve moram proveriti da li su se pojavili zaredom dva puta. U ovom slučaju samo jedan od ova dva uslova se izvršava, međutim nekada mi se desi da se dva puta pojavi broj 5 a da se program ne završi, a da se završi kada se dva puta zaredom pojave isti brojevi, a nekada obrnuto. Znam da ne bi bilo problema kada bi za uslov koristio samo jednu promenljivu, ali ovo je jedini način koji mi pada na pamet. Da li neko ima ideju kako bi mogao ovo drugačije da izvedem?
P.S: U slučaju da vam je bliskiji actionscript 3 isti taj zadatak izgleda ovako:
Kod:
var nasumicanBroj:int;
var broj2:int = 0;
var brojPonavljanja:int = 0;
var brojOstalihPonavljanja:int = 0;
do {
	nasumicanBroj = Math.random()*20;
	trace("Izabran je broj " + nasumicanBroj);
	if (nasumicanBroj == 5) {
		brojPonavljanja++;
	} else if (brojOstalihPonavljanja == 0) {
		broj2 = nasumicanBroj;
		brojOstalihPonavljanja++;
	} else if (brojOstalihPonavljanja == 1) {
		if (broj2 == nasumicanBroj) {
			brojOstalihPonavljanja++;
		} else {
			brojOstalihPonavljanja--;
		}
	}
} while (brojPonavljanja < 2 && brojOstalihPonavljanja < 2);

trace("Program je zavrsen zato sto je broj " + String((brojPonavljanja == 2) ? nasumicanBroj : broj2) + " izabran 2 puta");
Malo mi je čudno što u AS-u kada koristim logički operator && ne pojavljuje se navedeni problem, dok se u C# i dalje isto ponaša.

Poslednja ispravka: Bolton (22.1.2011 u 23:56) Razlog: actionscript update
Bolton je offline   Odgovor sa citatom ove poruke
 

Bookmarks sajtovi


Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Pesma/e koja vas najviše dirne? Wolverine Opšta kultura 1131 5.9.2019 15:13
Problem sa zvukom - da li je do hardware-a ili nesto drugo? FiresnakE Kvarovi 6 5.3.2010 12:08
Smešni, interesantni tekstovi o raznim geek temama NjegovaWisost Cvet kompjutera 286 20.2.2010 13:18
ASUS - AROT 2010 - pravila takmičenja (7.12.2009. do 5.1.2010.) Spacemaster Dešavanja i događaji 2 19.12.2009 22:40
Slušalice sa mikrofonom od 1000 do 1300 din donmarko ŠDK - Zvuk na računaru 12 26.8.2008 11:14


Sva vremena su po Griniču +2 h. Sada je 1:06.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com