Rozdział 17 zadanie domowe 1+pseudolosowe(...) Zadanie domowe.
Ostatnio zmodyfikowano 2012-11-16 09:49
kanam99 Temat założony przez niniejszego użytkownika |
Rozdział 17 zadanie domowe 1+pseudolosowe(...) Zadanie domowe. » 2012-11-15 21:39:25 Witam. Mam taki kod: #include <iostream> int wczytajLiczbe() { int a; bool ok; std::cin >> a; ok = std::cin.good(); if( ok == false ) do { std::cout << "Podales zla liczbe! Podaj liczbe calkowita!"; std::cin >> a; ok = std::cin.good(); std::cin.clear(); std::cin.sync(); } while( ok != true ); return a; }
int main() { std::cout << "Podaj liczbe: "; int liczba = wczytajLiczbe(); std::cout << "Podales liczbe: " << liczba << std::endl; return 0; }
i jest problem iż gdy wpiszę liczbę zmiennoprzecinkową to program zaokrągla ją zamiast uruchomić pętlę i wypisać komunikat o treści "Podales zla liczbe! Podaj liczbe calkowita!". Macie pomysł co z tym zrobić? I jeszcze jedno. Czy zadanie z pseudolosowych zrobiłem poprawnie? #include <iostream> #include <cstdlib> #include <ctime>
int main() { int koniec; do { int ilosc = 0; int liczba; srand( time( NULL ) ); std::cout << " Zgadnij liczbe!" << std::endl; std::cout << "Losuje liczbe z zakresu 1 do 1000" << std::endl; int losowanie =( rand() % 1000 ) + 1; do { std::cout << "Zgadnij liczbe ktora zostala wylosowana:"; std::cin >> liczba; std::cin.clear(); std::cin.sync(); ilosc++; if( liczba > losowanie ) std::cout << "Liczba jest za duza!" << std::endl; if( liczba < losowanie ) std::cout << "Liczba jest za mala!" << std::endl; if( liczba > 1000 ) std::cout << "Niepoprawna liczba!" << std::endl; if( liczba < 1 ) std::cout << "Niepoprawna liczba!" << std::endl; if( liczba == losowanie ) std::cout << "Gratulacje, wygrales!" << std::endl; } while( liczba != losowanie ); std::cout << "Liczba prob:" << ilosc << std::endl; std::cout << "Jeszcze raz? Cokolwiek dla tak, 0 dla nie:"; std::cin >> koniec; std::cin.clear(); std::cin.sync(); } while( koniec != 0 ); std::cout << "Koniec :D By Kanam99 2012"; return 0; }
Z góry dziękuję za odpowiedzi i pozdrawiam. |
|
Mrovqa |
» 2012-11-15 22:14:37 i jest problem iż gdy wpiszę liczbę zmiennoprzecinkową to program zaokrągla ją zamiast uruchomić pętlę i wypisać komunikat o treści "Podales zla liczbe! Podaj liczbe calkowita!". Macie pomysł co z tym zrobić? |
Wczytujesz liczbę do zmiennej liczby całkowitej (int), więc nic dziwnego, że Ci ją zaokrągla. |
|
kanam99 Temat założony przez niniejszego użytkownika |
» 2012-11-16 09:16:26 Wczytuję do zmiennej int i ją zaokrągla. To już wiem. Teraz pytanie jak to naprawić? |
|
wojownik266 |
» 2012-11-16 09:49:25 Zmienić typ zmiennej int na inny typ np. double. |
|
« 1 » |