Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Sprawdzanie poprawnosci zmiennych w kalkulatorze.

Ostatnio zmodyfikowano 2016-03-11 22:21
Autor Wiadomość
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:


C/C++
#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();
}
P-145907
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.
C/C++
while( !( std::cin >> zmienna ) ) { // jesli wprowadzana zmienna nie jest typu oczekiwanego wykonaj petle
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' ); // numeric_limits - #include <limits>
}

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ściowego
Czyszczenie 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).
P-145908
maczadro
Temat założony przez niniejszego użytkownika
.
» 2016-03-11 22:21:29
Dziękuje bardzo za pomoc :)
P-145909
« 1 »
  Strona 1 z 1