Witam, mam tu taki prosty program: wszystko działa ok oprócz jednej rzeczy - po wykonaniu funkcji trójkąt, w buforze jest nadal [enter], więc cokolwiekby po jej wykonaniu nie wpisać to wyskoczy błąd. Pytanie - w jaki sposób pozbyć się tego entera po wpisaniu wartości dla boku c (dla liter robi to funkcja wpiszlitere(), ale ona po wpisaniu 1 znaku przestaje czytać resztę - w przypadku liczb tak być nie może)
static zmienna=0;
// Nalicza wywolania programu
void trojkat()
{
float a, b, c;
printf("Podaj dlugosci wszystkich bokow:\n");
scanf("%f %f %f", &a, &b, &c);
if(a+b<c || a+c<b || b+c<a)
printf("To nie jest trojkat!\n");
else{
if(a*a+b*b==c*c ||a*a+c*c==b*b || b*b+c*c==a*a)
printf("To jest trojkat prostokatny!\n");
else
printf("To nie jest trojkat prostokatny!\n");
}
}
int wpiszlitere()
{
char ch;
ch=getchar();
while(getchar()!='\n')
continue;
return ch;
}
void funkcja()
{
printf("a. Porada\t\t\tc.Liczba wywolan\nb. Trojkat prostokatny\t\tq. Koniec\nWpisz litere:\n");
switch(wpiszlitere()){
case 'a' : printf("\nPorada: Kuj zelazo poki gorace\n\n");
++zmienna;
funkcja();
break;
case 'b' : ++zmienna;
trojkat();
funkcja();
break;
case 'c' : ++zmienna;
printf("\nWybrales juz %d opcji\n\n", zmienna);
funkcja();
case 'q' : break;
default : printf("Blad! Podaj poprawna litere!\n\n");
funkcja();
break;
}
}
int main()
{
funkcja();
return 0;
}