Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

lekcja 16

Ostatnio zmodyfikowano 2021-04-20 12:33
Autor Wiadomość
monikaw
Temat założony przez niniejszego użytkownika
lekcja 16
» 2021-04-19 11:38:50
Zrobiłam zadanie z lekcji 16. Wszystko mi działa, nie mogę tylko przeskoczyć jednej małej rzeczy. Otóż po wpisaniu litery pojawia mi się komunikat ,,Podaj cyfre nie litere", jednak poniżej tego komunikatu pojawia mi się również ,,Podałeś za małą liczbę. Próbuj dalej". Jak zabezpieczyć żeby przy podaniu litery nie pojawiał mi się komunikat o zbyt małej liczbie.
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <limits>
using namespace std;
int main()
{
   
srand( time( NULL ) );
   
float liczba;
   
int los =(( rand() % 100 ) + 1 );
   
int proby = 0;
   
   
do
   
{
       
proby++;
       
cout << "Zgadnij liczbe: ";
       
cin >> liczba;
       
if( cin.good() == false )
       
{
           
cout << "\nPodaj cyfre nie litere!" << endl << endl;
       
}
       
       
cin.clear();
       
cin.ignore( numeric_limits < streamsize >::max(), '\n' );
       
       
       
if( liczba < los )
       
{
           
cout << "\nPodales za mala liczbe. Probuj dalej" << endl << endl;
       
}
       
if( liczba > los )
       
{
           
cout << "\nPodales za duza liczbe. Probuj dalej" << endl << endl;
       
}
       
    }
while( liczba != los );
   
   
cout << "\nBrawo! Wylosowana liczba to: " << los << endl << endl;
   
cout << "\nUdalo Ci sie za " << proby << " razem." << endl << endl;
   
   
return 0;
}
P-178450
pekfos
» 2021-04-19 17:21:34
Przetwarzasz liczbę nawet gdy nie udało się jej wczytać. Gdzieś tam powinno być else.
P-178451
monikaw
Temat założony przez niniejszego użytkownika
» 2021-04-20 11:17:59
Próbowałam z else po cin.ignore ale nic to nie pomaga. Po cin.ignore nie moge dać else, a jeśli dam else po pierwszym if to program się odpala w nieskończoność.
P-178456
nanoant20
» 2021-04-20 12:33:58
C/C++
do
{
   
cout << "Zgadnij liczbe: ";
   
cin >> liczba;
   
++proby;
   
if( cin.good() == false )
   
{
       
cout << "\nPodaj cyfre nie litere!" << endl << endl;
       
//czyscimy strumien wejsciowy std::cin
       
std::cin.clear();
       
std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
       
--proby; //nie chcemy przecież liczyć liter
   
} else if( liczba < los )
   
{
       
cout << "\nPodales za mala liczbe. Probuj dalej" << endl << endl;
   
}
   
else if( liczba > los )
   
{
       
cout << "\nPodales za duza liczbe. Probuj dalej" << endl << endl;
   
}
   
}
while( liczba != los );

cout << "\nBrawo! Wylosowana liczba to: " << los << endl;
cout << "\nUdalo Ci sie za " << proby << " razem." << endl;
getchar(); //zamiast system("PAUSE");
return 0;
P-178457
« 1 »
  Strona 1 z 1