program nie liczy pola figury [nauka c]

0
#include <stdio.h>
int main()
{
    int wybor;
    float a, b, h, p;
    printf("Pole jakiej figory chcesz policzyc\n 1-kwadrat\n 2-prostokat\n 3-trojkat\n");
    scanf("%d", &wybor);
    switch (wybor)
    {


    case 1:
    {
        printf("podaj dlugosc boku\n");
        scanf("%d", &a);
        p=a*a;
        printf("pole wynosi: %d", p);
        break;
    }
    case 2:
        {
            printf("podaj dlugosc boku a\n");
            scanf("%d", &a);
            printf("podaj dlugosc boku b\n");
            scanf("%d", &b);
            p=a*b;
            printf("pole wynosi %d", p);
            break;

        }
    case 3:
        {
           printf("podaj dlugosc boku a\n");
            scanf("%d", &a);
            printf("podaj wysokosc h\n");
            scanf("%d", &h);
            p=0,5*a*h;
            printf("pole wynosi %d", p);
            break;
        }
        default:      break;
    }

    return(0);
}

Dlaczego wynik pola jest zawsze 0?

dodanie znacznika <code class="c"> - fp

1

O ile dobrze pamiętam.., powinno być przy wyświetlaniu %f ( %d jest dla liczb całkowitych..).

0
  1. Float to %f a nie %d
  2. Separator dziesiętny to kropka a nie przecinek. Taka operacja:
 p=0,5*a*h;

oznacza (edited: dzięki @Endrju ):

p=5*a*h;
0;

gdzie ta druga instrukcja po prostu "się wykona" (chociaż optymalizator pewnie ją wywali)
a chodziło ci o

 p=0.5*a*h;
0

Zalecam ustawienie break-ów po klamrach. Wszystkie dane możesz gromadzić przed obliczeniem, a potem je obliczać, bo pobieranie i obliczanie danych, i mieszanie tego razem jest wbrew zasadom spójności.
Jak kolega wyżej wspomniał, przecinek nie jest tym przecinkiem "matematycznym" - to jest odrębny operator w języku C i C++.

Mam jeszcze jedną sugestię, żebyś ten kod zmodularyzował, bo tworzenie takiego kodu a'la spaghetti nie należy do czystych i przejrzystych.

0

Dzięki mistrzu działa jak należy:)

1

W instrukcjach case z breakiem nie trzeba klamer.

1 użytkowników online, w tym zalogowanych: 0, gości: 1