Witam, muszę napisać w C program liczący za pomocą funkcji void pole prostokąta (a), koła (b) i trójkąta (c) posiadający menu umożliwiające wariantowe i wielokrotne wykonywanie obliczeń. Mam błąd, którego nie mogę wykryć, program kompiluje się normalnie; po obliczeniu pierwszego pola menu powinno się wyświetlić 2 raz, na obecnym etapie pole liczy się ok, jednak zamiast menu wyświetla się 2 raz prośba o podanie dł. boków prostokąta (lub promienia koła, lub wymiarów trójkąta), próbowałam w funkcji main przed przedostatnią klamerką wpisać wybor=menu();
wtedy menu wyświetla się ponownie, ale 2 razy i nie chce nic liczyć :/ Gdzie tkwi błąd - w funkcji main, fflush(stdin) czy gdzieś indziej? Proszę o pomoc :,(
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
char menu(void);
void pole_prostokata(void);
void pole_kola(void);
void pole_trojkata(void);
int main()
{
char wybor;
wybor=menu();
while(wybor!='q')
{
switch(wybor)
{
case 'a': pole_prostokata();
break;
case 'b': pole_kola();
break;
case 'c': pole_trojkata();
break;
default: menu();
}
}
return(0);
}
char menu(void)
{
char w;
puts("Program obliczajacy pola wybranych figur");
puts("a) pole prostokata");
puts("b) pole kola");
puts("c) pole trojkata");
puts("q) zakoncz");
fflush(stdin);
scanf("%c",&w);
return w;
}
void pole_prostokata(void)
{
float a,b,P;
printf("Podaj dlugosci bokow a i b prostokata: ");
scanf("%f%f",&a,&b);
P=a*b;
printf("Pole prostokata jest rowne: %f\n", P);
}
void pole_kola(void)
{float r,P;
printf("Podaj dlugosc promienia r kola: ");
scanf("%f",&r);
P=3.1415*r*r;
printf("Pole kola jest rowne: %f\n", P);
}
void pole_trojkata(void)
{
float a,h,P;
printf("Podaj dlugosc a boku oraz wysokosc h trojkata: ");
scanf("%f%f",&a,&h);
P=(a*h)/2.0;
printf("Pole trojkata jest rowne: %f\n", P);
}