Sprawdzanie poprawnosci zmiennych w kalkulatorze.
Ostatnio zmodyfikowano 2016-03-11 22:21
maczadro Temat założony przez niniejszego użytkownika |
Sprawdzanie poprawnosci zmiennych w kalkulatorze. » 2016-03-11 21:32:56 Witam, Pracuje nad kalkulatorem z lekcji 15 C++ wprowadzającą pętla do..while. Udało mi się zlikwidować problem kliknięcia przez użytkownika jakiegoś innego znaku niż cyfr od 1 do 5 w "menu" kalkulatora, ale dalej nie wiem jak zrobić czy może zablokować użytkownikowi możliwość wpisania zamiast wartości liczy "a" lub "b" jakiegoś znaku zamiast cyfry. Bardzo prosiłbym może nawet nie o pełną odpowiedź, a może bardziej o podpowiedź bym mógł to jakoś wykminić. Z góry bardzo dziękuje i pozdrawiam. KOD: #include <iostream> #include <stdio.h> using namespace std;
int main() { int opcja; int a, b; cout << "Calc Pro 0.1" << endl; cout << " " << endl; do { cout << " " << endl; cout << "[1] Dodawanie" << endl; cout << "[2] Odejmowanie" << endl; cout << "[3] Mnozenie" << endl; cout << "[4] Dzielenie" << endl; cout << "[5] Rezygnuj" << endl; cout << endl; cout << "Wybierz jedna opcje: "; cin >> opcja; if(( opcja >= 1 ) &&( opcja <= 5 ) ) { if(( opcja > 0 ) &&( opcja < 5 ) ) { cout << "Podaj pierwsza liczbe: "; cin >> a; cout << "Podaj druga liczbe: "; cin >> b; } switch( opcja ) { case 1: cout << "Wynik a + b to: " << a + b; break; case 2: cout << "Wynik a - b to: " << a - b; break; case 3: cout << "Wynik a * b to: " << a * b; break; case 4: cout << "Wynik a / b to: " << a / b; break; case 5: cout << endl; cout << "Dziekuje za skorzystanie z kalkulatora."; break; default: cout << "Podales bledna liczbe/znak"; break; } } else { cout << "Podales zla wartosc" << endl; break; } } while( opcja != 5 ); getchar(); }
|
|
carlosmay |
» 2016-03-11 22:15:26 ale dalej nie wiem jak zrobić czy może zablokować użytkownikowi możliwość wpisania zamiast wartości liczy "a" lub "b" jakiegoś znaku zamiast cyfry. |
while( !( std::cin >> zmienna ) ) { std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' ); } Bardzo prosiłbym może nawet nie o pełną odpowiedź, a może bardziej o podpowiedź bym mógł to jakoś wykminić. |
Tutaj są metody sprawdzania poprawności wprowadzanych danych. Obsługa strumienia wejściowegoCzyszczenie stosuj z punktu " Problemy z czyszczeniem strumienia pod Linuksem" - jest uniwersalne. std::cin.sync() - nie we wszystkich środowiskach czyści strumień. Do sprawdzania stanu strumienia stosuje się metody: std::cin.good() - zwraca true jeśli strumień jest OK. std::cin.fail() - zwraca true jeśli strumień jest w stanie błędu (np. wczytanie literki gdy oczekiwano liczby). |
|
maczadro Temat założony przez niniejszego użytkownika |
. » 2016-03-11 22:21:29 Dziękuje bardzo za pomoc :) |
|
« 1 » |