jebackoze Temat założony przez niniejszego użytkownika |
rozdział/lekcja 16, zadanie domowe » 2022-04-05 12:23:59 hej, ponizej wklejam kod, ktory nie chce prawidlowo dzialac, tj. po uruchomieniu nie wyswietla "drugiego" tekstu (15 wiersz), tj. Podaj liczbe z zakresu 1-1000: dopiero sie wyswietla powyzszy tekst po wprowadzeniu liczby. gdzie lezy blad? #include <iostream> #include <cstdlib> #include <ctime> #include <limits> using namespace std;
int main() { srand( time( NULL ) ); int liczba, licznik = 0, ukryta =(( std::rand() % 1000 ) + 1 ); cout << "test: " << ukryta << endl; cin.clear(); cin.ignore( numeric_limits < std::streamsize >::max(), '\n' ); cout << "Podaj liczbe z zakresu 1-1000: " << endl; cin >> liczba; licznik++; if( cin.good() && liczba >= 1 & liczba <= 1000 ) { do { licznik++; if( liczba < ukryta ) { cout << "to nie ta liczba, jest za mala, sprobuj ponownie: " << endl; cin.clear(); cin.ignore( numeric_limits < std::streamsize >::max(), '\n' ); cin >> liczba; } if( liczba > ukryta ) { cout << "to nie ta liczba, jest za duza, sprobuj ponownie: " << endl; cin.clear(); cin.ignore( numeric_limits < std::streamsize >::max(), '\n' ); cin >> liczba; } } while( liczba != ukryta ); licznik++; cout << "brawo, odgadles ukryta: " << ukryta << "\n wykonales prob: " << licznik << endl; } else cout << "zle dane, mialy byc liczby" << endl; return 0; }
ponizej to, co pokazuje sie w konsoli: test: 695 1 Podaj liczbe z zakresu 1-1000: 2 to nie ta liczba, jest za mala, sprobuj ponownie: 695 brawo, odgadles ukryta: 695 wykonales prob: 3
Process returned 0 (0x0) execution time : 3.220 s Press any key to continue. |
|
nanoant20 |
» 2022-04-05 13:48:08 zakomentuj cin.clear(); and cin.ignore tak jak poniżej cout << "test: " << ukryta << endl; cout << "Podaj liczbe z zakresu 1-1000: " << endl;
|
|
jebackoze Temat założony przez niniejszego użytkownika |
» 2022-04-05 13:54:57 probowalem tez tego, ale wowczas gdy np. wprowadze litere albo liczbe poza zakresem to nie przerywa mi programu i jako ciekawostke, liczy mi o 1 probe wiecej w takiej sytuacji test: 944 Podaj liczbe z zakresu 1-1000: 1 to nie ta liczba, jest za mala, sprobuj ponownie: a to nie ta liczba, jest za mala, sprobuj ponownie: 3 to nie ta liczba, jest za mala, sprobuj ponownie: aaaaaaa to nie ta liczba, jest za mala, sprobuj ponownie: 944 brawo, odgadles ukryta: 944 wykonales prob: 6
Process returned 0 (0x0) execution time : 8.998 s Press any key to continue.
|
|
nanoant20 |
» 2022-04-05 15:14:00 #include <iostream> #include <cstdlib> #include <ctime> #include <limits>
using namespace std;
int main() { srand( time( NULL ) ); int liczba, licznik = 0, ukryta =(( std::rand() % 1000 ) + 1 ); cout << "test: " << ukryta << endl; do { cout << "Podaj liczbe z zakresu 1-1000: "; cin >> liczba; if( cin.good() && liczba >= 0 & liczba <= 1000 ) { ++licznik; if( liczba < ukryta ) { cout << "liczba, jest za mala, sprobuj ponownie: " << endl; cin.clear(); cin.ignore( numeric_limits < std::streamsize >::max(), '\n' ); } if( liczba > ukryta ) { cout << "liczba, jest za duza, sprobuj ponownie: " << endl; cin.clear(); cin.ignore( numeric_limits < std::streamsize >::max(), '\n' ); } } else { cout << "zle dane, mialy byc liczby" << endl; cin.clear(); cin.ignore( numeric_limits < std::streamsize >::max(), '\n' ); } } while( liczba != ukryta ); cout << "brawo, odgadles ukryta: " << ukryta << "\n wykonales prob: " << licznik << endl; return 0; }
|
|
jebackoze Temat założony przez niniejszego użytkownika |
» 2022-04-05 19:34:19 no i elegancko, chyba cale to zamieszanie mi wychodzilo przez to, ze funkcje do umiescilem pod if, a nie odwrotnie i przez to tez else bylo poza petla |
|
« 1 » |