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

Wyrażenia, operatory, warunki

VPS Starter Arubacloud
–1 głos
927 wizyt
pytanie zadane 20 stycznia 2019 w C i C++ przez Artrix Początkujący (290 p.)

Witam, otóż mam problem z zadaniem, zaciąłem się w jedynym miejscu i nie wiem co dalej, prosiłbym bym kogoś o pomoc i nakierowanie.

Zadanie:
Twoim zadaniem jest napisanie programu sterującego systemem zbiorników retencyjnych dla Centrum Zarządzania Kryzysowego, tak aby zminimalizować ryzyko powodzi w zlewni jednej z rzek. 
API systemu jest dostępne w pliku reservoir_api.h, który znajdziesz w drugiej zakładce w edytorze. 
Na początek napisz funkcję calcAvailableCapacity, która jako wartość będzie zwracała objętość wody jaką zbiornik może jeszcze przyjąć przy aktualnym poziomie wody w zbiorniku.
Całkowitą objętość zbiornika w m3możesz uzyskać wywołując funkcję getCapacity( reservoirs ) gdzie reservoirsjest parametrem typu wyliczeniowego E_RESERVOIRSzdefiniowanego w pliku reservoir_api.hopisującym punkt pomiarowy.
Aktualny poziom wody w zbiorniku uzyskasz wywołując funkcję getLevel( reservoirs )natomiast szerokość i długość zbiornika zwracają odpowiednio funkcje: getWidth( reservoirs )i getLength( reservoirs ).
Pamiętaj, że aby skorzystać z funkcji, których deklaracje znajdują się w pliku reservoir_api.hmusisz dołączyć zawartość tego pliku do kodu źródłowego za pomocą dyrektywy preprocesora #include.

Konsola: 

#include <reservoir_api.h>
int calcAvailableCapacity( E_RESERVOIRS reservoirs )
{
    int getCapacity(E_RESERVOIRS reservoirs );
    int capacity = getLength( reservoirs ) *
       getWidth ( reservoirs ) * getLevel( reservoirs ) ;
      int calcAvailableCapacity = getRiverWidth( reservoirs ) * getRiverSpeed(reservoirs) 
      * getRiverLevel(reservoirs);
     capacity = 0;
     calcAvailableCapacity =0;
    return capacity;
    return calcAvailableCapacity;

}

Plik reservoir_api.h:

#ifndef RESERVOIR_API_H
#define RESERVOIR_API_H

// Lista nazw zbiorników i ich punktów kontrolnych
enum E_RESERVOIRS
{
    POLDER_UNKNOWN = 0,
    POLDER_BUKOW,
    POLDER_KRZESIN,
    POLDER_KOZLE,
    POLDER_OBROWIEC,
    POLDER_OPOLE,
    POLDER_ZELAZNA
};

// getCapacity: funkcja zwraca objętność zbiornika w m3 dla zadanego punktu E_RESERVOIRS
// Argumenty:
//      reservoirs: zmienna typu E_RESERVOIRS opisująca punkt pomiarowy
// return:
//      int: objętość zbiornika reservoirs w m3.
//           tożsame z getLength( reservoir ) * getWidth( reservoir ) * getDepth( reservoir )
int getCapacity( E_RESERVOIRS reservoirs );

// getLevel: funkcja zwraca aktualny poziom wody w zbiorniku w m
// Argumenty:
//      reservoirs: zmienna typu E_RESERVOIRS opisująca punkt pomiarowy
// return:
//      int: poziom wody w m w zbiorniku reservoir
int getLevel( E_RESERVOIRS reservoirs );

// getLength: funkcja zwraca długość zbiornika w m
// Argumenty:
//      reservoirs: zmienna typu E_RESERVOIRS opisująca punkt pomiarowy
// return:
//      int: długość zbiornika w m
int getLength( E_RESERVOIRS reservoirs );

// getWidth: funkcja zwraca szerokość zbiornika w m
// Argumenty:
//      reservoirs: zmienna typu E_RESERVOIRS opisująca punkt pomiarowy
// return:
//      int: szerokość zbiornika w m
int getWidth( E_RESERVOIRS reservoirs );

// getDepth: funkcja zwraca głębokość zbiornika w m
// Argumenty:
//      reservoirs: zmienna typu E_RESERVOIRS opisująca punkt pomiarowy
// return:
//      int: głębokość zbiornika w m
int getDepth( E_RESERVOIRS reservoirs );

// getWidth: funkcja zwraca szerokość rzeki w m
// Argumenty:
//      reservoirs: zmienna typu E_RESERVOIRS opisująca punkt pomiarowy
// return:
//      int: szerokość rzeki w m
int getRiverWidth( E_RESERVOIRS reservoirs );

// getRiverSpeed: funkcja zwraca prędkość rzeki w m/s w punkcie pomiarowym
// Argumenty:
//      reservoirs: zmienna typu E_RESERVOIRS opisująca punkt pomiarowy
// return:
//      int: prędkość rzeki w m/s
int getRiverSpeed( E_RESERVOIRS reservoirs );

// getRiverLevel: funkcja zwraca aktualny poziom wody w rzece w m
// Argumenty:
//      reservoirs: zmienna typu E_RESERVOIRS opisująca punkt pomiarowy
// return:
//      int: poziom wody w m w rzece
int getRiverLevel( E_RESERVOIRS reservoirs );

#endif // RESERVOIR_API_H

Tutaj znajduje się podpowiedź do zadania:

Na samym początku kodu musisz użyć dyrektywy
#include <reservoir_api.h>
aby do kodu źródłowego dołączyć zawartość tego pliku. 

Popatrz na obszerną część właściwego rozwiązania:

int calkowita_objetosc = getCapacity( reservoirs );
int zajeta_objetosc = getLength( reservoirs ) *
       getWidth ( reservoirs ) * getLevel( reservoirs ); 


Mając objętość całkowitą (zwraca ją funkcja getCapacity( reservoirs ) ) oraz tę zajętą przez wodę, łatwo obliczysz objętość dostępną, którą ma zwrócić funkcja. 

1
komentarz 20 stycznia 2019 przez DragonCoder Nałogowiec (36,500 p.)
Wklejeasz to juz 3 raz... Zacialem sie, nie mowi nic, zdefiniuj dokladnie problem
1
komentarz 20 stycznia 2019 przez niezalogowany
Cały kod który masz jest bez sensu. Masz tak dokładne podpowiedzi, że wystarczyłoby dodać do nich 1 linię kodu, żeby wszystko działało.
komentarz 20 stycznia 2019 przez Artrix Początkujący (290 p.)
A oprócz dodania jednej linii kodu trzeba coś pozmieniać?
1
komentarz 20 stycznia 2019 przez niezalogowany
Chodziło mi o kod w podpowiedziach.
komentarz 20 stycznia 2019 przez Artrix Początkujący (290 p.)
A jak calkowita_objetosc i zajeta_objetosc mają errora "unused variable " to jak dodam odpowiedni kod to będzie dobrze?
1
komentarz 20 stycznia 2019 przez niezalogowany
Jeżeli te zmienne zostaną użyte to tak.
komentarz 20 stycznia 2019 przez Artrix Początkujący (290 p.)
I wtedy dalej będzie tylko 1 linijka kodu czy już trochę więcej?
komentarz 20 stycznia 2019 przez DragonCoder Nałogowiec (36,500 p.)
Nie jestem pewien, ale czy multi returns nie sa zabronione? Bynajmiej w owej formie jak wyzej? Nie powinno sie zwracac tablicy, albo uzyc std::tuples, czy cos w tym stylu?
komentarz 20 stycznia 2019 przez Artrix Początkujący (290 p.)
W żadnym zadaniu, które rozwiązywałem multi returns nie występowało, więc nie wiem czy może być, a o std::tuples nie było mowy więc na pewno nie będzie.
komentarz 20 stycznia 2019 przez Artrix Początkujący (290 p.)
Dobra, udało mi się, dzięki wszystkim za pomoc :)

1 odpowiedź

0 głosów
odpowiedź 20 stycznia 2019 przez VirtualMember Pasjonat (15,790 p.)
W którym miejscu się zaciąłeś? Opisz wkład własny.
komentarz 20 stycznia 2019 przez Artrix Początkujący (290 p.)

Na samym początku było:

int calcAvailableCapacity( E_RESERVOIRS reservoirs )
{
    int capacity = 0;
    return capacity;
}

Teraz jestem w momencie:

#include <reservoir_api.h> 
int calcAvailableCapacity( E_RESERVOIRS reservoirs )
 {
 int getCapacity(E_RESERVOIRS reservoirs ); 
int capacity = getLength( reservoirs ) * getWidth ( reservoirs ) *
 getLevel( reservoirs ) ;
 int calcAvailableCapacity = getRiverWidth( reservoirs ) *
 getRiverSpeed(reservoirs) * getRiverLevel(reservoirs);
 capacity = 0; 
calcAvailableCapacity =0;
 return capacity;
 return calcAvailableCapacity; }

Teraz nie wiem co dalej zrobić,  czy coś zmienić lub coś dodać?

Podobne pytania

0 głosów
1 odpowiedź 310 wizyt
pytanie zadane 10 lipca 2021 w C i C++ przez Eriss69 Gaduła (4,470 p.)
+1 głos
1 odpowiedź 150 wizyt
pytanie zadane 3 września 2016 w JavaScript przez uRTLy Bywalec (2,420 p.)
+1 głos
1 odpowiedź 146 wizyt
pytanie zadane 20 lipca 2016 w C i C++ przez Avernis Nałogowiec (27,400 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...