[Kurs C++, Lekcja 15] Jak sprawdzić poprawność wprowadzanych danych?
Ostatnio zmodyfikowano 2011-07-21 23:00
Raccoon Temat założony przez niniejszego użytkownika |
[Kurs C++, Lekcja 15] Jak sprawdzić poprawność wprowadzanych danych? » 2011-07-21 21:45:29 Witam. Mam problem z zadaniem domowym. Otóż gdy w kalkulatorze własnej roboty wpisuję literę zamiast cyfry, program wpada w szał pisania i pętla do...while przeskakuje wszystkie std::cin. Próbowałem już instrukcję warunkową if...else..., próbowałem też std::cin.fail/good. Co mam zrobić, aby wpisując literę zamiast liczby całkowitej program nie sfiksował, tylko np. wyświetlił komunikat że "nie ma takiego polecenia" itp., a pętla nie przeskakiwała strumieni std::cin? Chciałem jakoś wkleić tu kod, ale nie za bardzo wiem jak... :) Używam programu Code::Blocks.
P.S. Nie bijcie za mocno, jak zrobiłem coś źle, jestem tutaj nowy :)
|
|
SeaMonster131 |
» 2011-07-21 22:11:03 |
|
Raccoon Temat założony przez niniejszego użytkownika |
» 2011-07-21 22:50:14 oo, to wiele wyjaśnia... xD czyli będę musiał się "trochę" namęczyć z kalkulatorem... >_> Dzięki wielkie za pomoc :)W takim razie mam inne pytanie. Gdzie w kodzie: #include <iostream> int main() { std::cout << "witaj!" << std::endl << std::endl << std::endl; long long a; int b; int c; do { std::cout << "Wybierz operacje:" << std::endl; std::cout << "[1] dodawanie" << std::endl; std::cout << "[2] odejmowanie" << std::endl; std::cout << "[3] mnozenie" << std::endl; std::cout << "[4] dzielenie" << std::endl; std::cout << "[5] zakoncz" << std::endl; std::cin >> a; switch( a ) { case 1: std::cout << "Wpisz pierwsza liczbe: "; std::cin >> b; std::cout << "Wpisz druga liczbe: "; std::cin >> c; std::cout << "Wynik: " << b + c << std::endl; break; case 2: std::cout << "Wpisz pierwsza liczbe: "; std::cin >> b; std::cout << "Wpisz druga liczbe: "; std::cin >> c; std::cout << "Wynik: " << b - c << std::endl; break; case 3: std::cout << "Wpisz pierwsza liczbe: "; std::cin >> b; std::cout << "Wpisz druga liczbe: "; std::cin >> c; std::cout << "Wynik: " << b * c << std::endl; break; case 4: std::cout << "Wpisz pierwsza liczbe: "; std::cin >> b; std::cout << "Wpisz druga liczbe: "; std::cin >> c; std::cout << "Wynik: " << b / c << std::endl; break; case 5: std::cout << "Dzieki za skorzystanie z programu!"; break; default: std::cout << "Nie ma takiego polecenia!" << std::endl; } } while( a != 5 ); return 0; } mam powpisywać if, bool i pętle do...while? Do każdego case'a osobno? Czy można to jakoś z leksza ukrócić? |
|
jaupl |
» 2011-07-21 22:54:40 Stwórz funkcje która będzie wczytywała liczbę i ją zwracała. (oczywiście zabezpieczając przed błędnym wprowadzeniem danych) i wywołuj ją w tych miejscach których potrzebujesz. :) |
|
DejaVu |
» 2011-07-21 22:58:56 Później nauczysz się jak tworzyć kod, który można wykorzystywać wielokrotnie zmieniając tylko jego konfigurację (mowa tu o funkcjach o których wspomniał już kolega) :) |
|
Raccoon Temat założony przez niniejszego użytkownika |
» 2011-07-21 23:00:43 k, dziękować za pomoc :) |
|
« 1 » |