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

Rozdział 16 Zadanie domowe

Ostatnio zmodyfikowano 2023-01-11 23:35
Autor Wiadomość
Ariel
Temat założony przez niniejszego użytkownika
Rozdział 16 Zadanie domowe
» 2023-01-11 12:57:45
Cześć chciłem sie upewnić czy dobrze wykonałem zadanie, oraz dopytac co mogłbym poprawic (2tydzien nauki c++)
Twoim zadaniem domowym jest napisanie prostej gry, która ma działać następująco:
1. Program losuje liczbę z przedziału od 1 do 1000.
2. Użytkownik zgaduje liczbę, która została wylosowana.
3. Jeżeli podana liczba jest za duża (za mała) gra wypisuje stosowny komunikat i powraca do kroku 2.
4. Jeżeli gracz trafi liczbę wylosowaną to progam kończy działanie, wypisując na ekran wylosowaną liczbę oraz liczbę 'strzałów', które oddał gracz.
Gra ma być zabezpieczona przed możliwością wprowadzenia błędnych wartości liczbowych.
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int a, strzal;
int main()
{
   
srand( time( NULL ) );
   
   
int liczba =(( rand() % 1000 ) + 1 );
   
cout << "Podaj liczbe" << endl;
   
for( int i = 1; i = strzal; );
   
   
do
   
{
       
cin >> a;
       
       
       
if( a < liczba ) { cout << "podales za mala" << endl; }
       
if( a > liczba ) { cout << "podales za duza" << endl; }
       
cout << "Proba nr: " << strzal + 2 << endl;
       
strzal++;
   
}
   
while( a != liczba );
   
   
cout << "Trafiony Sztosik" << endl;
   
cout << "Wylosowana liczba to:" << liczba;
   
   
return 0;
   
}
P-179866
pekfos
» 2023-01-11 18:36:31
To nie jest wykonane zgodnie z opisem. Miało być zabezpieczone przed błędnymi danymi i wypisać liczbę strzałów dopiero po trafieniu.

Zmienne powinny być utworzone blisko miejsca użycia, a w szczególności nie powinny być globalne gdy nie ma na to potrzeby.

C/C++
for( int i = 1; i = strzal; );
To szczęśliwie nic nie robi.
P-179869
Ariel
Temat założony przez niniejszego użytkownika
» 2023-01-11 21:44:19
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
   
int a, strzal;
   
srand( time( NULL ) );
   
int liczba =(( rand() % 1000 ) + 1 );
   
cout << "Podaj liczbe" << endl;
   
do
   
{
       
while( !( cin >> a ) )
       
{
           
cout << endl << "Blad, podaj poprawna liczbe: ";
           
cin.clear();
           
cin.sync();
       
}
       
       
if( a < liczba ) { cout << "podales za mala" << endl; }
       
if( a > liczba ) { cout << "podales za duza" << endl; }
       
strzal++;
   
}
   
while( a != liczba );
   
   
cout << "Trafiony udalo Ci sie przy " << strzal << " probie" << endl;
   
cout << "Wylosowana liczba to: " << liczba;
   
return 0;
   
}

Inaczej nie potrafię, jest ok?
P-179873
pekfos
» 2023-01-11 22:05:14
sync() nie jest za dobrym rozwiązaniem bo zależnie od kompilatora potrafi nic nie robić. Lepsze jest ignore(), opisane w » Kurs C++» Poziom 1Obsługa strumienia wejściowego lekcja. Poza tym szczegółem jest dobrze.
P-179875
Ariel
Temat założony przez niniejszego użytkownika
» 2023-01-11 23:35:37
Dzieki za pomoc !
P-179878
« 1 »
  Strona 1 z 1