• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

funkcja licząca bmi

Object Storage Arubacloud
0 głosów
644 wizyt
pytanie zadane 8 kwietnia 2020 w C i C++ przez mehovic Nowicjusz (120 p.)

witam.postanowiłem poćwiczyć funkcje i nie wiem dlaczego ale nie mogę użyć funkcji jako funkcji. Przyjjrzycie się co zrobiłem źle?

#include <iostream>
#include <string>

using namespace std;
int waga, wzrost;
int bmi(int waga, int wzrost)
{
    return waga / (wzrost*wzrost/10000.);
}

int main()
{

  int waga, wzrost;
  float bmi;
  cout << "Podaj swoj wzrost(cm): ";
cin >> wzrost;
 
while(wzrost < 40 or wzrost > 300)
{
   cout << "Wzrost nieprawidlowy: Podaj ponownie: ";
   cin >> wzrost;
}
  cout << "Podaj swoja wage(kg): ";
cin >> waga;
 
while(waga < 30 or waga > 500)
{
   cout << "Waga nieprawidlowa: Podaj ponownie: ";
   cin >> waga;
}

bmi(waga, wzrost);
 
cout << "bmi(waga, wzrost)" <<endl;
cout << bmi << endl << endl;


if(bmi < 18)
{
    cout << "jestes za chudy.." << endl;
}

if(bmi > 18 and bmi < 25)
{
    cout<<"idealnie"<< endl;
}

if(bmi > 25)
{
    cout << "jestes za gruby." << endl;
}

return 0;
}


 

1 odpowiedź

+1 głos
odpowiedź 8 kwietnia 2020 przez DragonCoder Nałogowiec (36,500 p.)
Musisz przypisac wartosc, ktora zwracasz do jakies zmiennej, wiec zmienna = funkcja i dopiero wtedy dalej mozesz jej uzywac.

BTW, nie nazywaj zmiennej i funkcji tak samo
komentarz 8 kwietnia 2020 przez mehovic Nowicjusz (120 p.)
dzięki jesteś totalnym szefem i będę pamiętał o twojej radzie
komentarz 9 kwietnia 2020 przez Noseczek12 Użytkownik (550 p.)

Zgadzam się z użytkownikiem DragonCoder. Przy okazji postanowiłem nieco zoptymalizować twój kod i stworzyć jedną dużą funkcję void, która wyświetla BMI i w zależności od jej wartości wstawia odpowiedni komentarz.

Jedyne co mnie zastanowiło, to zainicjalizowanie zmiennych waga i wzrost w nagłówku (jako zmienna globalna) i w int main (jako zmienna lokalna) jednocześnie. Najlepiej jest inicjalizować zmienne lokalnie, ponieważ potencjalny użytkownik programu nie będzie w stanie ingerować w wartości zmiennych w programie. Może nie w tym do liczenia BMI, ale bardziej chodzi o jakieś większe programy, które kiedyś będziesz pisał w przyszłości :)

#include <iostream>
#include <iomanip>

using namespace std;

void bmi(int waga, int wzrost)
{
    float wskaznik = waga / (wzrost*wzrost/10000.);

    if(wskaznik < 18)
    {
        cout << "Twoje BMI wynosi: " << setprecision(4) << wskaznik << endl;
        cout << "jestes za chudy.." << endl;
    }

    if(wskaznik > 18 && wskaznik < 25)
    {
        cout << "Twoje BMI wynosi: " << setprecision(4) << wskaznik << endl;
        cout << "Jest idealnie !" << endl;
    }

    if(wskaznik > 25)
    {
        cout << "Twoje BMI wynosi: " << setprecision(4) << wskaznik << endl;
        cout << "Jestes za gruby !" << endl;
    }
}

int main()
{
    int waga, wzrost;
    cout << "Podaj swoj wzrost(cm): ";
    cin >> wzrost;

    while(wzrost < 40 or wzrost > 300)
    {
        cout << "Wzrost nieprawidlowy: Podaj ponownie: ";
        cin >> wzrost;
    }
    cout << "Podaj swoja wage(kg): ";
    cin >> waga;

    while( waga < 30 or waga > 500)
    {
        cout << "Waga nieprawidlowa: Podaj ponownie: ";
        cin >> waga;
    }

    bmi(waga,wzrost);

    return 0;
}

 

Podobne pytania

0 głosów
2 odpowiedzi 1,552 wizyt
0 głosów
1 odpowiedź 1,791 wizyt
0 głosów
2 odpowiedzi 3,700 wizyt

92,566 zapytań

141,420 odpowiedzi

319,614 komentarzy

61,952 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...