C++ obiektowe

0

Cześć mam za zadanie napisac program "Balonik"
Wykonaj program jak w temacie, na podstawie poniższych wytycznych:

  1. Napisz klasę balonik, której zmiennymi publicznymi będą wysokosc [m] i srednica [cm]. Klasę należy zaopatrzyć w funkcję do zmiany wysokości zmien_wysokosc, której argumentem będzie przyrost wysokości.
  2. Napisz funkcję globalną pompuj, służącą do pompowania baloników, której argumentami będą obiekt typu balonik oraz ilość wtłaczanego powietrza [dm3].
    Funkcja powinna przeliczać podaną objętość na średnicę balonika na podstawie
    wzoru: V= (pi*D^3)/6
  3. Zdefiniuj trzy obiekty typu balonik – czerwony, zielony i niebieski oraz zademonstruj działanie powyższych funkcji.
#include <iostream>
#include <cmath>

using namespace std;

class Balonik{
public:
    float wysokosc;
    float srednica;
    float zmienWysokosc(float przyrostWysokosci){
        return wysokosc+=przyrostWysokosci;
   }
};
float pompuj(Balonik balonik,float powietrze){

    float srednica;
    return srednica = cbrt((6*powietrze)/3.14)*10;
}
int main() {
    Balonik czerwony,zielony,niebieski;
    cout << "Bierzemy wszystkie 3 baloniki i napelniamy je powietrzem..."<<endl;
    cout << "Balonik czerwony napelniony jest 7 dm3 powietrza i ma srednice " << pompuj(czerwony,7) << " cm\n";
    cout << "Balonik zielony napelniony jest 14 dm3 powietrza i ma srednice " << pompuj(zielony,14) << " cm\n";
    cout << "Balonik czerwony napelniony jest 29 dm3 powietrza i ma srednice " << pompuj(czerwony,4) << " cm\n";
   
    return 0;
}

Jakoś nie jestem przekonany do tego co napisałem, tzn liczyć liczy dobrze ale nie jestem pewien czy to do końca jest obiektowe

0

Czy może powinienem napisac np
czerwony.srednica=pompuj(czerwony,7);
i później np
cout << "Balonik czerwony napelniony jest 7 dm3 powietrza i ma srednice " << czerwony.srednica << " cm\n";

0

Jeśli chcesz to zrobić w pełni obiektowo zrób to lepiej w osobnych plikach, Balonik.h, Balonik.cpp, Main.cpp
poza tym metoda pompuj powinna należeć do klasy Balonik

0

W poleceniu jest że to ma być funkcja globalna

0

Nwm, wydaje mi się że napisałem zgodnie z poleceniem, może w poleceniu jest błąd albo powinienem tą funkcje napisać wewnątrz klasy Balonik

1

Sygnatura funkcji zmieniającej wysokość powinna wyglądać tak: void balonik::zmienWysokość(float). W tej funkcji masz modyfikować zmienną balonik::wysokosc. Obecnie tego nie robisz.
Funkcja pompuj powinna przyjmować balonik przez referencję, żeby zmiany dokonane na przekazanym obiekcie były widoczne po wyjściu z funkcji.

Poczytaj o tym jak odwoływać się do składowych obiektu oraz o przekazywaniu zmiennych przez wartość/wskaźnik/referencję.

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