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.h, opisują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.h, musisz 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.