Lekcja 16 gra
Ostatnio zmodyfikowano 2013-02-20 13:15
Eldakar Temat założony przez niniejszego użytkownika |
Lekcja 16 gra » 2013-02-15 00:34:55 #include <iostream> #include <cstdlib> #include <ctime> int main() { srand( time( NULL ) ); int a =( rand() % 10 ) + 1; int b; int c = 0; std::cout << "Select correct number in the range of 1 to 10\n\n"; do { std::cin >> b; if( b >= 1 && b != a && b <= 10 ) { std::cout << "try again" << std::endl; c++; std::cin.clear(); std::cin.sync(); } else { if( b != a ) std::cout << "idiot, choose integers in range" << std::endl; std::cin.clear(); std::cin.sync(); } } while( b != a ); std::cout << "good for you \nlucky number = " << a << std::endl; std::cout << "number of trials = " << c << std::endl; return 0; }
program działa prawie dobrze, tylko potrzebuje pomocy z założeniem w oznaczonym miejscu jaki warunek napisać żeby zmienna należała do liczb całkowitych, ponieważ teraz program akceptuje każdą liczbe rzeczywistą z założonego zakresu i liczba powtórzeń zostaje zakłamana |
|
jsc |
» 2013-02-15 01:02:46 W ifie może dodać warunek !cin.good () |
|
Eldakar Temat założony przez niniejszego użytkownika |
» 2013-02-15 11:34:01 teraz nie akceptuje nawet całkowitych :) nie ma jakiegoś symbolu liczb całkowitych? |
|
Frish |
» 2013-02-15 12:08:56 |
|
stone |
» 2013-02-15 12:15:12 A próbowałeś sprawdzić poprawność wprowadzenia przed sprawdzeniem czy a == b? Ja w swojej grze zrobiłem to w ten sposób: do { cout << "Podaj liczbe: " << endl; cin >> a; poprawnosc = cin.good(); cin.clear(); cin.sync(); } while( poprawnosc == 0 );
Potem porównałem za pomocą switch, czy wprowadzona liczba równa się wylosowanej, jeżeli tak przechodził dalej, jeżeli nie za pomocą funkcji if sprawdziłem czy jest większa czy mniejsza i wypisałem komunikat. |
|
Adam3423 |
» 2013-02-15 12:20:53 program akceptuje rzeczywiste, ale i tak odbiera je jako calkowite wiec liczba prob nie jest zaklamana, poza tym jesli dobrze kojarze zadanie to program mial pokazywać komunikaty czy liczba którą podales jest wieksza czy mniejsza od wylosowanej;) |
|
Eldakar Temat założony przez niniejszego użytkownika |
» 2013-02-15 12:27:47 rzeczywiście przybliża :) i jak widzisz ta gra nie jest na razie skończona ot finalna wersja #include <iostream> #include <cstdlib> #include <ctime> int main() { srand( time( NULL ) ); int a =( rand() % 10 ) + 1; int b; int c = 1; std::cout << "Select correct number in the range of 1 to 10\n\n"; do { std::cin >> b; if(( b < 1 || b > 10 ) && b != a ) { std::cout << "idiot, choose integers in range" << std::endl; std::cin.clear(); std::cin.sync(); } else { if( b >= 1 && b != a && b <= 10 && b < a ) { std::cout << "try higher numbers" << std::endl; c++; std::cin.clear(); std::cin.sync(); } else { if( b >= 1 && b != a && b <= 10 && b > a ) { std::cout << "try lower numbers" << std::endl; c++; std::cin.clear(); std::cin.sync(); } } } } while( b != a ); std::cout << "good for you \nlucky number = " << a << std::endl; std::cout << "number of trials = " << c << std::endl; return 0; }
|
|
Adam3423 |
» 2013-02-15 12:34:57 jeżeli się nie myle to nie da się zrobić żeby wyświetlal błąd przy podaniu rzeczywistej(przynajmniej mój obecny stan wiedzy tego nie potrafi) ale ktoś bardziej doświadczony może to skoryguje;) |
|
« 1 » 2 |