C++ obiektowe

BA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
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.
Kopiuj
#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

BA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
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";

au7h
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 215
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

BA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
0

W poleceniu jest że to ma być funkcja globalna

BA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
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

tajny_agent
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1340
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ę.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.