Witam, program działa dość dziwnie, mam na myśli to że za pierwszym razem wykonywanie działań przebiega poprawnie, lecz potem zaczyna wariować. Dlaczego tak się dzieje?
#include <stdio.h>
char wybor_dzialania(void);
float pierwsza(void);
float druga(void);
char dzialanie(char ch, float a, float b);
int main(void)
{
float liczba1, liczba2;
char wybor;
while((wybor = wybor_dzialania()) != 'k')
{
liczba1 = pierwsza();
liczba2 = druga();
dzialanie(wybor, liczba1, liczba2);
}
return 0;
}
char wybor_dzialania(void)
{
char ch;
printf("a. dodawanie b. odejmowanie\n");
printf("c. mnozenie d. dzielenie\nk. koniec\n");
ch = getchar();
return ch;
}
float pierwsza(void)
{
float liczba;
char ch;
printf("Podaj liczbe: \n");
while ((scanf("%f", &liczba)) != 1)
{
while ((ch = getchar()) != '\n')
putchar(ch);
printf(" nie jest liczba\nJeszcze raz...");
}
return liczba;
}
float druga(void)
{
float liczba;
char ch;
printf("Podaj liczbe: \n");
while ((scanf("%f", &liczba)) != 1)
{
while ((ch = getchar()) != '\n')
putchar(ch);
printf(" nie jest liczba\nJeszcze raz...");
}
return liczba;
}
char dzialanie(char ch, float a, float b)
{
switch (ch)
{
case 'a' : printf("%f + %f = %f\n", a, b, a + b);
break;
case 'b' : printf("%f - %f = %f\n", a, b, a - b);
break;
case 'c' : printf("%f * %f = %f\n", a, b, a * b);
break;
case 'd' : printf("%f / %f = %f\n", a, b, a / b);
break;
default : printf("Blad!\n");
}
}