Zabezpieczenie przed wpisywaniem liter, a switch.

0

Witam, mam problem z zabezpieczeniem przed wpisywaniem liter. Mianowicie, nie wiem jak to robić dla kilku zmiennych, oraz gdzie tego użyć (jeśli użyje w konkretnym case, nic się nie wyświetla)
Kawałek kodu:

 using namespace std;
int nwd (int a, int b)
{
    int r;
    while (b>0)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}

int nww (int a, int b)
{
    return a*b/nwd(a,b);
}

int wynik (int a, int b)
{
    return a*b;
}
int main(int argc, char *argv[])
{
    cout<<"Program wykonuje podstawowe dzialania arytmetyczne na ulamkach zwyklych:\n\n";
    int a,b,c,d,l,m,k;
        int x=0;
        menu:
    {
        cout<<"MENU"<<endl;
    cout<<"1.Dodawanie liczb"<<endl;
    cout<<"2.Odejmowanie liczb"<<endl;
    cout<<"3.Mnożenie liczb"<<endl;
    cout<<"4.Dzielenie liczb"<<endl;
    cout<<"5.Wyjscie z programu."<<endl;
    cout<<"Wybierz: ";
    cin>>x;
    system("cls");
    }
        switch (x)
    {
        case 1:
      cout<<"DODAWANIE"<<endl;
      cout<<"Podaj licznik pierwszego ulamka: ";
      cin>>a;
      cout<<"Podaj mianownik pierwszego ulamka: ";
      cin>>b;
      cout<<"Podaj licznik drugiego ulamka: ";
      cin>>c;
      cout<<"Podaj mianownik drugiego ulamka: ";
      cin>>d;
        {
                    int w;
                    cout<<"SUMA"<<endl;
                    l=a*d+c*b;
                    m=b*d;
                    w=nwd(l,m);
                    l/=w;
                    m/=w;
                        if(l==m)
                            cout<<"Wynik: "<<1<<endl<<endl;
                        else
                            {
                                if(l>m)
                                    {
                                        cout<<"Czesc calkowita:        "<<l/m<<endl;
                                        cout<<"Licznik po skroceniu:   "<<l%m<<endl;
                                        cout<<"Mianownik po skroceniu: "<<m<<endl<<endl;
                                    }
                                else
                                    {
                                        cout<<"Licznik po skroceniu:   "<<l<<endl;
                                        cout<<"Mianownik po skroceniu: "<<m<<endl<<endl;
                                    }
                            }
                }
                    cout<<"0 - powrot do menu, 1 - zamkniecie programu"<<endl;
                cout<<"Wybor: ";
                cin>>k;
                    switch (k)
                        {
                            case 0:
                                system("cls");
                                    goto menu;
                                case 1:
                                    return(0);
                        }
            break;
0

Ukradli opcję szukania?
Zabezpieczenie przed wpisywaniem liter

0

Napisałem, że nie chce mi to zadziałać (prawdopodobnie wstawiam to tam gdzie nie trzeba).

1

W takim razie spróbuj wstawić tam gdzie trzeba...
Podaj więcej konkretów: komunikat błędu, kod z sprawdzaniem stanu strumienia. Tak to możemy wróżyć z fusów.

3

template<typename T>
T GetData(const char *message, const char *errmesg)
{
    T number = 0;
    while((std::cout << message) && !(std::cin >> number))
    {
        std::cout << errmesg;
        std::cin.clear();
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }
    return number;
};
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0