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 »  |