Witam, mam dwa pytania:
- Chciałem napisać fragment kodu, który wykrywa, czy wpisana wartość za pomocą cin to liczba, jeżeli nie, to program prosi o ponowne podanie liczby. Korzystając z ksiązki Praty o programowaniu w C++, wykorzystałem "trik" z wykryciem pobrania poprawnej wartości i zwrócenia wyniku przez cin i napisałem coś takiego:
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main()
{
int liczba;
cout<<"Prosze wpisac liczbe, a przejde dalej"<<endl;
while( !(cin>>liczba) )
{
cout<<"Nie podales liczby! Sproboj ponownie"<<endl;
cin.clear();
while(cin.get() != '\n')
continue;
}
cout<<"Koniec"<<endl;
return 0;
}
Program działa, ale jeżeli wpiszę np "12qwerty" to pobiera liczby do pierwszego znaku. Ktoś wie, jak wyeliminować ten błąd? Pewnie można wstawić na początku pętli jakiegoś if, tylko jakiego?
- Podobny program co poprzedni, tylko tym razem zamiast liczby żąda znaku:
#include <iostream> //"Zrobic cw z rozdzialu 8: 2, 3, 5, 6"
#include <string>
#include <cctype>
using namespace std;
int main()
{
char znak;
cout<<"Prosze wpisac znak, a przejde dalej"<<endl;
while( !(cin>>znak) )
{
cout<<"Nie podales znaku! Sproboj ponownie"<<endl;
cin.clear();
while(cin.get() != '\n')
continue;
}
cout<<"Wpisales znak "<<znak<<endl;
return 0;
}
Jak wiemy wartością char może być np literka A, ale także cyfra 2. Jak zrobić, aby w programie nr 2 program interpretował zmienną znak jako tylko znaki? Czy nie da się tego zrobić wykorzystując ten trik z obiektem cin?