Kod: Zaznacz cały
#include <stdio.h>
int main()
{
int liczba;
printf("Podaj LICZBE: ");
if(scanf("%d",&liczba)!=1)
printf("To nie jest liczba!\n");
else
printf("Wpisales: %d\n",liczba);
return 0;
}
Pozdrawiam.
Kod: Zaznacz cały
#include <stdio.h>
int main()
{
int liczba;
printf("Podaj LICZBE: ");
if(scanf("%d",&liczba)!=1)
printf("To nie jest liczba!\n");
else
printf("Wpisales: %d\n",liczba);
return 0;
}
To chyba właśnie ma sens Bo wtedy podajesz aż nie podasz spoza przedziału, a bez mojego warunku po jednym wczytaniu liczby z przedziału [0-10] program by się zakończył - jak chcemy tylko raz wczytać, to na jasną cholerę pętlę robić?Harry Xin pisze: matshadow, ja błędu nie widzę - chcemy otrzymać liczbę z tego przedziału 1-10, więc pętla ma się wykonywać dopóki nie zostanie podana taka wartość.
Jeżeli byśmy zaprzeczyli, to pętla wykonywałaby się dopóki podawalibyśmy wartości z tego przedziału.
Jak widac dla strumieni wejsciowych jest on niezdefiniowany:... flush.html
Nie przyrownuje zadnego printfa, tylko scanfa. I on rzeczywiscie zwraca liczbe typu int, bedaca liczba poprawnie wprowadzonych danych. Chce wczytac jedna liczbe, wiec jak zwroci cos innego od 1, to znaczy ze wczytal zle.If it was open for reading and the last operation was an input operation, the behavior depends on the specific library implementation. In some implementations this causes the input buffer to be cleared, but this is not standard behavior.
Kod: Zaznacz cały
#include<stdio.h>
int main()
{
int liczba=-1,e=2;
char c='\0';
do
{
printf("Podaj liczbe [0-10]:");
e=scanf("%d",&liczba);
while ( ( c = getchar() ) != '\n' && c != EOF ) ; // 1
}while((e!=1)||(liczba<0||liczba>10));
printf("Nasza poprawna liczba to :%d",liczba);
return 0;
}