Witam, pisze programik i mam 2 pytanka...
Czy w switch case mogę w środku każdego przypadku prosić kogoś o wpisanie zmiennych? Bo nie wiem czemu program jakby całkowicie omija mi te funkcje scanf() w środku każdego przypadku.
2 pytanie dotyczy zmiennej typu enum - jaki muszę wpisać typ w scanf("%d", &sposob); kiedy sposób jest właśnie zmienną typu enum, ponieważ przy całkowitej d wyskakuje mi taki błąd..
warning: format '%d' expects argument of type 'int *', but argument 2 has type 'enum decyzja *'
W razie czego wstawie i tak kod programu :P
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
enum decyzja {SPOSOB_1=1, SPOSOB_2, SPOSOB_3, KONIEC};
int opcja_1(int a, int h)
{
return (1/2*(a*h));
}
int opcja_2(int a, int b, int c)
{
int p = (a+b+c)/2;
int q = p*(p-a)*(p-b)*(p-c);
return sqrt(q);
}
int opcja_3(int a, int b, int c)
{
int p = 1/2*(a*b);
int q = sin(p);
return q;
}
int main()
{
enum decyzja sposob;
int bok1, bok2, podst, wys, kat;
do
{
puts("Wybierz ktora opcja chcesz policzyc pole.\nMENU: \n");
puts(" 1. Na podstawie znajomosci podstawy i wysokosci.\n");
puts(" 2. Na podstawie znajomosci bokow (wzor Herona).\n");
puts(" 3. Na podstawie znajomosci dwoch bokow i kata pomiedzy nimi.(kat w radianach)\n");
puts(" 4. Wyjdz z programu.\n");
scanf("%d", &sposob);
switch(sposob)
{
case SPOSOB_1:
scanf("Podaj postawe:%d i wysokosc:%d.\n", &podst, &wys);
printf("Pole wynosi:%d.", opcja_1(podst, wys));
break;
case SPOSOB_2:
scanf("Podaj 1 bok:%d, 2 bok:%d, 3 bok:%d.", &bok1, &bok2, &podst);
printf("Pole wynosi:%d.", opcja_2(bok1, bok2, podst));
break;
case SPOSOB_3:
scanf("Podaj 1 bok:%d, 2 bok:%d i kat:%d.\n", &bok1, &bok2, &kat);
printf("Pole wynosi:%d.", opcja_3(bok1, bok2, kat));
break;
case KONIEC:
puts(" Wyszdles z programu.\n");
break;
default:
puts(" Wpisz jedna z 4 liczb okreslonych przez MENU.\n");
break;
}
}while(sposob != 4);
return 0;
}