lekcja 16 zadanie
Ostatnio zmodyfikowano 2025-06-04 00:28
melon Temat założony przez niniejszego użytkownika |
lekcja 16 zadanie » 2013-02-21 20:35:35 Witam Głowiłem się troche nad zadaniem 16. Przeszukując forum napotykałem poprawne odpowiedzi, jednak niektore z nich wydawaly mi sie zbyt zawile. Mysle ze moje rozwiazanie bedzie zrozumiale dla poczatkujacych programistow, albo po prostu bedzie alternatywą.Chyba ze cos tu brakuje ? #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main() { srand( time( NULL ) ); int liczba, a, ile; ile = 0; liczba =( rand() % 9 ) + 1; cout << "losowanie liczby od 1 do 9 " << endl; do { cin.clear(); cin.sync(); cout << "podaj swoja liczbe" << endl; cin >> a; ile++; if( a < 0 || a > 9 ) cout << "zly przedzial liczbowy" << endl; if( a > liczba ) cout << "za duza" << endl; if( a < liczba ) cout << "za mala" << endl; } while( !( a == liczba ) ); cout << "git poprawna liczba jest:" << a << endl; cout << "wykonales tyle strzalow:" << ile << endl; return 0; } |
|
termistor |
» 2025-06-04 00:28:21 #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
int main() { srand(time(NULL)); int liczba, a, ile; ile = 0; liczba = (rand() % 9) + 1; cout << "losowanie liczby od 1 do 9 " << endl; do { cin.clear(); cin.sync(); cout << "podaj swoja liczbe" << endl; cin >> a; ile++; if(a < 0 || a > 9) cout << "zly przedzial liczbowy" << endl; if(a > liczba) cout << "za duza" << endl; if(a < liczba) cout << "za mala" << endl; } while (!(a == liczba)); cout << "git poprawna liczba jest:" << a << endl; cout << "wykonales tyle strzalow:" << ile << endl; return 0; }
Ocena rozwiązania: Kod realizuje podstawowe zadanie poprawnie, jednak można wskazać kilka punktów do poprawy. 1. Walidacja danych wejściowych: Obecnie program nie obsługuje przypadków, gdy użytkownik wpisuje niepoprawne dane (np. litery zamiast cyfr). Proponowana poprawka: if(cin >> a) { // poprawna operacja wczytywania } else { cin.clear(); cin.ignore(1000, '\n'); cout << "Bledne dane - podaj liczbe!" << endl; }
2. Zmienna zakres: Zakres losowania liczby jest "wcięty" w kod. Lepszym rozwiązaniem byłoby zdefiniowanie go jako stałej: const int MIN = 1; const int MAX = 9; liczba = (rand() % (MAX - MIN + 1)) + MIN;
3. Zmienne w języku polskim: Choć nie jest to błąd, to w kodzie w języku C++ lepiej stosować nazwy zmiennych w języku angielskim (np. "number" zamiast "liczba"). 4. Usprawnienie warunku: Warunek w pętli while można uprościć: } while (a != liczba);
5. Przydatne dodatki: - Dodanie opcji podpowiedzi po określonej liczbie prób - Zliczanie średniej liczby prób po wielu rundach - Obsługa wielu rund bez restartu programu Podsumowanie: Twoje rozwiązanie jest zrozumiałe i funkcjonalne. Działa poprawnie dla przypadków, gdy użytkownik wpisuje liczby z zakresu 1-9. Proponowane poprawki zwiększą odporność programu i jego elastyczność. |
|
« 1 » |