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