Kalkulator BMI dla kilku osób

1

Hejka wam, Prosiłbym o pomoc w zadanku z programowania screenshot-20210207100345.png (zamieszczonego w zdj)
Zrobiłem wydaje mi się, że większość ale nie mam pojęcia jak zrobić to ostatnie z osobami w dynamicznej tablicy.
To mój aktualny kod:

#include <iostream>
using namespace std;

class Osoba
{
    string imie, nazwisko;
    float wzrost, waga;
 public:
     void BMI()
     {
         cout << "Podaj swoje imie i nazwisko: ";
         cin >> imie >> nazwisko;
         cout << "Podaj swoja wage oraz wzrost: ";
         cin >> waga >> wzrost;
         cout << "Twoje BMI wynosi: " << waga/(wzrost*wzrost) << endl;
     }
     Osoba(float wz=0, float wa=0,string im="", string na="")
     {
         imie = im;
         nazwisko = na;
         wzrost = wz;
         waga = wa;
     }
};

int main()
{
    Osoba k1;
    k1.BMI();
    return 0;
}
4

Użyj kontenera std::vector jako dynamicznej tablicy jak w przykładzie poniżej.

#include <iostream>
#include <vector>

using namespace std;

class Person
{
private:
    string name, surname;
    double weight {10} ,growth {10};
public:
    double getBMI() const { return weight/growth*growth; }
    Person( string name_ , string surname_ , double weight_ , double growth_ )
    : name {name_} , surname {surname_}
    {
        if( weight_>10 ) weight=weight_;
        if( growth_>10 ) growth=growth_;
    }
    friend ostream& operator<<( ostream& out , const Person& person )
    {
        out << person.name << " " << person.surname << " : " << person.weight << " [kg] , ";
        out << person.growth << " [cm] : has BMI " << person.getBMI();
        return out;
    }
};

int main()
{
    vector<Person> persons;
    persons.emplace_back( "John","Thin",60,195);
    persons.emplace_back( "Andy","Thick",180,174);

    for( const auto& person : persons )
    {
        cout << person << endl;
    }
}

https://godbolt.org/z/MbW9sG

0

@TomaszLiMoon: a daloby sie moze jakos prosciej to wytlumaczyc oraz cos dziwnie to dziala, poniewaz wpisuje dane np. 160cm oraz 50kg, to jako return BMI zamiast np 19 w tym przypadku to otrzymuje 160

1

@Konrad Zarzecki: Po pierwsze - wzór na BMI to waga/wzrost^2 - waga wyrażona w [kg], a wzrost w [m].

void BMI()
     {
         cout << "Podaj swoje imie i nazwisko: ";
         cin >> imie >> nazwisko;
         cout << "Podaj swoja wage oraz wzrost: ";
         cin >> waga >> wzrost;  // in: 75 1.80 [75kg oraz 1.80m]
         cout << "Twoje BMI wynosi: " << waga/(wzrost*wzrost) << endl; 
     }

Po drugie:

#include <iostream>

using namespace std;

class Osoba
{
private:
    string imie, nazwisko;
    float wzrost, waga;
public:
    void BMI()
    {
        cout << "Twoje BMI wynosi: " << waga / (wzrost * wzrost) << endl;
    }
    void INFO()
    {
        std::cout << "[IMIE NAZWISKO WZROST WAGA]";
        std::cin >> imie >> nazwisko >> wzrost >> waga;
    }
    Osoba(float wz = 0, float wa = 0, string im = "", string na = "")
    {
        imie = im;
        nazwisko = na;
        wzrost = wz;
        waga = wa;
    }
};

int main()
{
    unsigned int ileOsob = 0; // inicjowanie zmiennej
    std::cout << "Ile osob: ";
    std::cin >> ileOsob;
    Osoba* _osoba = new Osoba[ileOsob]; // tablica dynamiczna

    for (int i = 0; i < ileOsob; i++) _osoba[i].INFO(); // Wczytaj informacje
      
    for (int i = 0; i < ileOsob; i++) _osoba[i].BMI(); // Oblicz i wyswietl

    delete[] _osoba; // zwolnij pamiec
    return 0;
}
1

@bobbysteam2: co do 1 to wiem, ze taki jest wzor na BMI, a co do drugiego dzieki wielkie sprobuje to sobie jakos ogarnac i napisac cos podobnego. Bardzo dziękuje wam za pomoc

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