Pętla while.
Ostatnio zmodyfikowano 2014-06-12 23:56
4Gigis1 Temat założony przez niniejszego użytkownika |
Pętla while. » 2014-06-10 21:22:28 Stworzyłem sobie ten oto program. #include <iostream> #include <cstdlib> #include <ctime> int main() { int a; int b; int c = 0; int wybor; int zz; int liczba; std::cout << "Wybierz zakres:" << std::endl; std::cout << "Od: "; std::cin >> a; std::cout << "Do: "; std::cin >> b; srand( time( NULL ) ); liczba =( rand() %( b - a ) ) + a; std::cout << liczba << std::endl; std::cout << "Powtorzyc losowanie?" << std::endl; std::cout << " [1] Tak" << std::endl; std::cout << " [2] Nie" << std::endl; std::cin >> wybor; switch( wybor ) { case 1: while( zz =!liczba ) { srand( time( NULL ) ); zz =( rand() %( b - a ) ) + a; } std::cout << zz << std::endl; break; case 2: break; default: std::cout << "Nie podano zadnej liczby."; } return 0; }
I oto chciałbym, aby w drugim losowaniu, nie mogło się wylosować to co w pierwszym, a to nie działa. Gdzie jest błąd? |
|
Jacob99 |
» 2014-06-10 21:24:46 Kurs na tej stronie-> Losowanie bez powtórzeń.
|
|
pekfos |
» 2014-06-10 21:33:40 Kurs na tej stronie-> Losowanie bez powtórzeń. |
Raczej "Kurs na tej stronie-> Operacje porównania". |
|
4Gigis1 Temat założony przez niniejszego użytkownika |
» 2014-06-10 22:14:33 Przepraszam, nie zauważyłem... Błąd w starym programie poprawiłem i nadal nie działa. Nie wiem czy da się, tym co napisałem za pierwszym razem, to zrobić? |
|
pekfos |
» 2014-06-11 14:35:49 srand() powinno być wywołane raz w takim programie. Dodatkowo, po poprawieniu warunku w pętli, zz jest użyte niezainicjalizowane, i zapewne warunek jest zły.. Popraw i zamiast pisać same 'dalej nie działa', podaj kod. |
|
4Gigis1 Temat założony przez niniejszego użytkownika |
» 2014-06-11 20:40:49 Dobrze, zamieniłem pętle while, na do... while, wydaje mi się, że to uprości sprawę. Kod: #include <iostream> #include <cstdlib> #include <ctime> int main() { int a; int b; int c = 0; int wybor; int zz; int liczba; srand( time( NULL ) ); std::cout << "Wybierz zakres:" << std::endl; std::cout << "Od: "; std::cin >> a; std::cout << "Do: "; std::cin >> b; liczba =( rand() %( b - a ) ) + a; std::cout << liczba << std::endl; std::cout << "Powtorzyc losowanie?" << std::endl; std::cout << " [1] Tak" << std::endl; std::cout << " [2] Nie" << std::endl; std::cin >> wybor; switch( wybor ) { case 1: do { zz =( rand() %( b - a ) ) + a; } while( zz != liczba ); std::cout << zz << std::endl; break; case 2: break; default: std::cout << "Nie podano zadnej liczby."; } return 0; }
|
|
pekfos |
» 2014-06-11 20:47:47 i zapewne warunek jest zły |
Jak chcesz wylosować taką samą liczbę, to po prostu przypisz.. |
|
4Gigis1 Temat założony przez niniejszego użytkownika |
» 2014-06-11 20:52:59 Nie rozumiem, w takim razie jaki warunek powinienem użyć? |
|
« 1 » 2 3 |