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

C++ - Zadanie domowe

Object Storage Arubacloud
0 głosów
1,104 wizyt
pytanie zadane 29 listopada 2016 w C i C++ przez niezalogowany

Cześć dostałem takie zadanie:

Zadanie:
urządzenie monitorujące funkcje życiowe pacjenta na Oddziale Intensywnej Opieki Medycznej sprawdza: skurczowe i rozkurczowe ciśnienie krwi, puls oraz temperaturę ciała. Po przekroczeniu granicznych wartości urządzenie wywołuje alarm. Zgodnie z API urządzenia zawartego w pliku medical_api.h,  wartości paramterów odczytuje się z czujników wywołując funkcje:
1. ciśnienie skurczowe: get_systolic_pressure();
2. ciśnienie rozkurczowe: get_diastolic_pressure();
3. tętno: get_pulse();
4. temperatura ciała: get_temperature();
 
Zakresy wartości poszczególnych parametrów uznane za prawidłowe przedstawiają się następująco:

1. ciśnienie skurczowe: 100 - 139 mm Hg
2. ciśnienie rozkurczowe: 70 - 89 mm Hg
3. tętno: 55 - 80 uderzeń na minutę
4. temperatura: 36.0 - 37.0 stopni Celsjusza.

Możliwe stany alarmowe to:
NORMAL = wszystkie parametry życiowe są w normie
WARNING = jeden z parametrów (np. tętno albo ciśnienie skurczowe lub/i rozkurczowe) uległ odchyleniu od normy.
DANGER = dwa parametry (np. tętno i temperatura ) są już niebezpieczne dla życia.
CRITICAL = trzy lub więcej parametrów uległo zmianie stan pacjenta jest krytyczny!

Aha, pamiętaj, że niezależnie które ciśnienie (skurczowe, rozkurczowe czy oba naraz) ulegają zaburzeniu, należy traktować to jako podniesienie alarmu o 1 stopień.

Uzupełnij funkcję checkCondition() tak aby w przypadku przekroczenia którejkolwiek wartości zgłosiła prawidłowy alarm: WARNING, DANGER, CRITICAL. W przypadku gdy wszystko jest dobrze niech funkcja zgłosi wartość NORMAL.

Tak wygląda mój aktualny kod:

#include <medical_api.h>

E_MEDICALS checkCondition()
{
    int sys     =  get_systolic_pressure();
    int dia     =  get_diastolic_pressure();
    int pulse   =  get_pulse();
    float temp  =  get_temperature();
    
    int warns   =  0;
    
    enum wyniki
    {
        NORMAL = 1,
        WARNING = 2,
        DANGER = 3,
        CRITICAL
    };
    
    wyniki wynik;
    
    if(sys < 100 || sys > 139)
    {
        warns = warns + 1;
    }
    
    if(dia < 70 || dia > 89)
    {
        warns = warns + 1;
    }
    
    if(pulse < 55 || pulse > 80)
    {
        warns = warns + 1;
    }
    
    if(temp < 36 || temp > 37)
    {
        warns = warns + 1;
    }
    
    if(warns == 0)
    {
        wynik = NORMAL;
    }
    else if(warns == 1)
    {
        wynik = WARNING;
    }
    else if(warns == 2)
    {
        wynik = DANGER;
    }
    else if(warns == 3)
    {
        wynik = CRITICAL;
    }
    
    return wynik;
}

medical_api.h:

#ifndef MEDICAL_API_H
#define MEDICAL_API_H

// Lista stanów alarmowych
enum E_MEDICALS
{
    UNKNOWN = 0,
    NORMAL,
    WARNING,
    DANGER,
    CRITICAL
};

// get_systolic_pressure: funkcja zwraca ciśnienie skurczowe podłączonego pacjenta
// Argumenty:
//      brak: funkcja nie pobiera żadnych wartości
// return:
//      int: ciśnienie skurczowe
int get_systolic_pressure();

// get_diastolic_pressure: funkcja zwraca ciśnienie rozkurczowe podłączonego pacjenta
// Argumenty:
//      brak: funkcja nie pobiera żadnych wartości
// return:
//      int: ciśnienie rozkurczowe
int get_diastolic_pressure();

// get_pulse: funkcja zwraca ilość uderzeń serca na minute podłączonego pacjenta
// Argumenty:
//      brak: funkcja nie pobiera żadnych wartości
// return:
//      int: ilość uderzeń serca na minute
int get_pulse();

// get_temperature: funkcja zwraca temperature ciała w stopniach celcjusza podłączonego pacjenta
// Argumenty:
//      brak: funkcja nie pobiera żadnych wartości
// return:
//      int: temperatura w stopniach celcjusza
float get_temperature();

#endif // MEDICAL_API_H

Otóż przy próbie kompilacji dostaje błąd:

Cannot convert 'checkCondition()'

 

Wie ktoś jak to poprawić? :D

1 odpowiedź

0 głosów
odpowiedź 29 listopada 2016 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Zamiast tworzyć nowego enuma w funkcji checkCondition(), zadeklaruj obiekt enuma E_MEDICALS i do niego przypisuj wyniki.
komentarz 29 listopada 2016 przez efiku Szeryf (75,160 p.)

Powinieneś dodać, by w końcu używać #pragma once niż #ifdef.. ;) 

Podobne pytania

+1 głos
0 odpowiedzi 224 wizyt
0 głosów
0 odpowiedzi 971 wizyt
pytanie zadane 20 września 2019 w C i C++ przez KamilKerry Początkujący (390 p.)
0 głosów
1 odpowiedź 194 wizyt
pytanie zadane 16 kwietnia 2020 w HTML i CSS przez new103 Nowicjusz (190 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...