Witam, piszę program w C gdzie jest dużo scafnów, i wszystkie z nich pobierają tylko i wyłącznie cyfry z jakiegoś zakresu np. 1-4.
Napisałem funkcje która sprawdza czy scanf pobrał CYFRĘ z danego zakresu:
int check(int a, int b) {
int i=1;
int result=0;
for(i=1 ; i<=b ; i++) {
if(a==i) {
result=1;
}
}
return result;
}
...main...
scanf("%d",&c);
while(1) {
if(!check(c,3)){
printf("Zly wybor, sproboj jeszcze raz:\n"); scanf("%d",&c);
}
else break;
}
Gdzie a to wpisana liczba na wejście, a b to zakres.
I w sumie działa fajnie, ale problem polega na tym, że jak wpisze coś innego niż cyfrę, np literę, to zapętla sie WHILE wypisując ciągle printf’a “zły wybór…”. Dlaczego, i jak to naprawić?
Możesz troszkę jaśniej? Najlepiej na jakimś przykładzie
%c to char, zgadza się? Na charach nie moge wykonywać operacji arytmetycznych tak?
Wiec pobieram chara, wtedy sprawdzam w ten sam sposób (?) czy jest CYFRĄ z zakresu, a poźniej zamieniam go na int’a, (jak?)
Pozdraiwm
EDIT: dodając w pętli getchar(); pozbyłem się tego problemu. Już jest prawie dobrze, jednak gdy wpiszę np. a1 (znak i liczbe z zakresu) to przechodzi dalej, po kilku pustych przejsciach petli…