Wątek przeniesiony 2014-03-10 14:39 z C/C++ przez ŁF.

Losowanie liczb z przedziału i sprawdzenie poprawności wprowadzonych danych

0

Witam. Program nie działa mi tak jak należy. muszę wpisywać 2x liczbę. problem występuje po dodaniu kodu na sprawdzenie czy wprowadzone daną są prawidłowe(czy jest to liczba czy znak)

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
	srand(time(NULL));
	int liczba1 = (rand() % 100)+1;
	int liczba2;
	int a;
	bool daneok= cin.good();
	a=0;
	cout << "Zgadnij jaka liczbe z przedzialu od 1 do 100 wylosowalem ;-)" << endl;
	do
	{
	
		cin >> liczba2;

		while(!(cin>>liczba2))
		{
			cout << "Nie podales liczby!" <<endl;
			cin.clear(); 
  			cin.sync();
		}
		
	do{
	if(liczba2<=100 && liczba2>=1)
		{
	if(liczba1>liczba2)
		cout << "Za malo.Podaj wieksza liczbe." << endl;
	if(liczba1<liczba2)
		cout << "Za duzo.Podaj mniejsza liczbe." << endl;
		}
		else
{
cout << "Podales liczbe z poza zakresu 1-100.Probuj dalej." << endl;}
	}
	while(liczba2>=100&& liczba2<=1);
	a++;
}while(liczba1!=liczba2);
	cout << "BRAWO.Wylosowana liczba to " << liczba1 << endl;
	cout << "Potrzebowales " << a << " proby";
	
	return 0;
} 
1

poformatuj kod normalnie. Tego sie nie da czytac.

to samo mozna napisac mniej wiecej tak

int wysolowanaLiczba, liczbaWczytana;
wylosowanaLiczba = (rand() % 100)+1;
bool trafiony = false;
while (!trafiony){
  cout << "Zgadnij jaka liczbe z przedzialu od 1 do 100 wylosowalem ;-)\n";
  cin >> liczbaWczytana;
  if(wysolowanaLiczba == liczbaWczytana) {
    trafiony = true;
  }
}
1
while(!(cin>>liczba2))
        {
            cout << "Nie podales liczby!" <<endl;
            cin.clear(); 
              cin.sync();
        }

w tej pętli zmień warunek na (!liczba2)

0

dam1an, dzięki, teraz działa fajnie

0

Sorki poprawka, pierwszego cina usuń a ten zostaw, bo teraz to w przypadku litery z pętli nie wyjdzie.

cin >> liczba2; // to usuń
 
        while(!(cin>>liczba2)) // to zostaw
        {
            cout << "Nie podales liczby!" <<endl;
            cin.clear(); 
              cin.sync();
        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1