Funkcja bmi.

0

Witam mam zadanie: Napisz funkcje, ktora oblicza wskaznik BMI. Zademonstruj dzialanie funkcji. Lecz z moim kodem jest coś nie tak. Język C.
Co poprawić?

#include <stdio.h>
#include <stdlib.h>
int bmifunkcji(float wzrost,float waga,float bmi)
{
 bmi = waga/(wzrost*wzrost);
 if (bmi<16)
    printf("wyglodzenie\n");
    else if(bmi>16, bmi<17)
    printf("wychudzenie spowodowane czesto przez ciezka chorobe\n");
    else if(bmi>=17, bmi<18.5)
    printf("niedowaga\n");
    else if(bmi>=18.5, bmi<25)
    printf("wartosc prawidlowa\n");
    else if(bmi>=25, bmi<30)
    printf("nadwaga\n");
    else if(bmi>=30, bmi<35)
    printf("I stopien otylosci\n");
    else if(bmi>=35, bmi<=40)
    printf("II stopien otylosci\n");
    else if(bmi>40)
    printf("III stopien otylosci, otylosc skrajna\n");
    
   

}

int main(void)
{
 float wzrost;
 float waga;
 float bmi;

 printf("Podaj wage w kilogramach(zamiast przecinka uzywaj kropki!): ");
 scanf("%f",&waga);
 printf("Podaj wzrost w metrach(z kropka! np. 1.7): ");
 scanf("%f",&wzrost);

 printf("Twoje bmi to %f\n",bmifunkcji(wzrost,waga,bmi));


 return(0);
}
0

Po pierwsze kod umieszczaj w znacznikach do tego przeznaczonych.

Po drugie dlaczego funkcja bmifunkcji zamiast wyliczyć BMI oraz je zwrócić wykonuje dodatkowe wypisywanie? Łamiesz zasadę SRP.

Po trzecie funkcja bmifunkcji niby zwraca jakiegoś inta, ale tak naprawdę nie zwraca niczego, a Ty wykorzystujesz zwrócony wynik w funkcji printf Zamiast tego podstawia wynik pod zmienną lokalną przekazaną jako argument do funkcji.

Mała podpowiedź:
Musisz tak napisać funkcję aby zwróciła wartość:

float bmifunkcji(float wzrost,float waga)
{
  float bmi = waga/(wzrost*wzrost);
  return bmi;
}

Wtedy to zadziała tak jak chcesz.

No i jeszcze bym się przyczepił do słabej nazwy funkcji bmifunkcji raczej nic nie mówi co ona robi.

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