[c++]-problem z funkcjami warunkowymi


(As Pikowy) #1

Witajcie. Od kilku dni bawie się c ++ i ma problem z pewnym programem. ma on obliczać BMI i w zależnosci od wyniku wypisywac, cy mamy schudnąc itp.

#include

#include

int main()

{

    float fWzrost;

    std::cout << "wprowadz swoj wzrost podany w metrach"<
    std::cin >> fWzrost;


    float fMasa;

    std::cout << "wprowadz swoja mase" <
    std::cin >> fMasa;



    float fWynik;

    fWynik=fMasa/(fWzrost*fWzrost);

    std::cout << "twoj wspolczynnik BMI wynosi " <

     if (fWynik > 24);

    {

               std::cout <<( "Jestes gruby, schudnij!!!") << std::endl;

    }

               else

    {

                   std::cout << ("Nie musisz sie martwic o swoja tusze.") << std::endl;

    }

   getch();

}

Dev c++ mówi , że ma być ; przed else i jakies primary expression. Z góry dzięki za pomoc.


(Fiołek) #2

Przypatrz się linijce z if-em :wink:


(As Pikowy) #3

Dzięki :smiley:

A mam jeszcze jedno pytanie. Teraz mam w moim programie tak jakby 2 kategorie wagi: za gruby i odpowiedni. Jak zrobić np. jeszcze niedowagę?

Czy mogę po prostu dla każdego przedziału liczbowego zrobić if?


(Sawyer47) #4

Tak.


(Mazquick Tv) #5

Hmm musisz sprawdzić ile wynosi współczynnik dla osoby z niedowagą ;] i dodać else if :slight_smile:


(As Pikowy) #6
#include

#include

int main()

{

    float fWzrost;

    std::cout << "wprowadz swoj wzrost podany w metrach"<
    std::cin >> fWzrost;


    float fMasa;

    std::cout << "wprowadz swoja mase" <
    std::cin >> fMasa;



    float fWynik;

    fWynik=fMasa/(fWzrost*fWzrost);

    std::cout << "twoj wspolczynnik BMI wynosi " <

     if (fWynik > 24)

    {

               std::cout <<( "Jestes gruby, schudnij!!!") << std::endl;

    }

     if(fWynik < 24, fWynik > 20)

    {

                   std::cout << ("Nie musisz sie martwic o swoja tusze. Twoja waga jest w sam raz! ") << std::endl;

    }

    if (fWynik <20)

    {

               std::cout << ("CZLOWIEKU! JESTES NIEDOZYWIONY") << std::endl;

    }

   getch();

}

[/code]

Wszystko fajnie, tylko jak wyjdzie na przykład 26, czyli nadwaga, to mi się wyświetla zarówno to, co powinno być przy nadwadze jak i to, co jest przypisane do wagi idealnej.


(Sawyer47) #7
  1. Użyj if .. else if .. else, tak aby kolejne warunki były sprawdzane tylko kiedy zawiodą poprzednie. Przykład: http://www.java2s.com/Code/Cpp/Language ... action.htm

  2. Aby połączyć warunki powinieneś użyć operatorów logicznych && (konkiunkcja) i || (alternatywa). Operator przecinka istnieje w C++, więc napisany przez Ciebie kod jest poprawny składniowo, ale nie działa tak jak byś chciał.

PS Po co używać jakiejś DOS-owej, nieprzenośnej biblioteki?


(As Pikowy) #8

Dzięki, poszło.

A o co Ci chodzi z tymi bibliotekami?


(Drobok) #9

Do zatrzymania programu nie używa się conio bo nie działa pod linuchem ;]


(Grzegorz Wziatek) #10

zrob tak

if (fWynik > 24) std::cout <<( "Jestes gruby, schudnij!!!") << std::endl;


    else if(Wynik > 20) std::cout << ("Nie musisz sie martwic o swoja tusze. Twoja waga jest w sam raz! ") << std::endl;


   else std::cout << ("CZLOWIEKU! JESTES NIEDOZYWIONY") << std::endl;

   [/code]

powinno zadziałać


(somekind) #11

Wygodniej jest napisać "using namespace std;" przed kodem funkcji, zamiast pisać "std::cout" milion razy.

BTW - uważałbym na słowa, bo ten kod powyżej nazwie Pudziana grubym... :wink:

No, i niedożywienie to chyba trochę coś innego niż niedowaga.


(As Pikowy) #12

Jakoś nie zwracałem na to uwagi... :slight_smile: