[C++] Baza Pacjentów

Forum dotyczące ogólnie pojętego programowania - algorytmów, struktur danych, narzędzi programistycznych, itp - głównie w kontekście komputerów PC.
ODPOWIEDZ
Awatar użytkownika
Luminofor
Użytkownik
Posty: 1373
Rejestracja: 27 lis 2007, 17:17
Lokalizacja: Polska

[C++] Baza Pacjentów

Post autor: Luminofor » 22 gru 2009, 20:48

Witam, dlostałem oto takie zadanie:
Baza danych pacjentów

Program generuje 100 obiektów reprezentujących pacjentów o losowej zawartośi danych:

* nazwisko - losowe - jedno z dziesięciu zaproponowanych,
* imię (podobnie jak nazwisko)
* płeć
* wiek - z przedziału 1-100;
* waga - z przedziału 3-120
* ciśnienie - z przedziału 80 - 190
* poziom cukru z przedziału 0.1- 0.9.

Pacjenci są umieszczani na liście w kolejności tworzenia. Następnie program drukuje na ekranie dane 10 pacjentów o skrajnych wartościach parametrów liczbowych. Program podaje informację o średniej wadze kobiet i mężczyzn oraz o średnim poziomie cukru.
Zrealizowałem je tak:
http://wklej.org/id/243845/

Proszę o opinie, uwagi, zastrzeżenia, sugestie, z góry bardzo dziękuje za pomoc.

atelszewski
Użytkownik
Posty: 143
Rejestracja: 12 sie 2005, 9:36
Lokalizacja: Banie

Post autor: atelszewski » 22 gru 2009, 22:04

Witam,

Jeśli nie było wymagane, aby lista pacjentów była utworzona jako lista ze wskaźnikiem na kolejny element (pacjenta), wydaje mi się, że łatwiej było zrobić tablicę na 100 wskaźników do obiektów klasy pacjent:

Kod: Zaznacz cały

pacjent *lista_pacjentow[100];
Wtedy łatwiejsze (czytelniejsze, w mojej opinii) byłyby np. funkcja do dodawania, sortowania, etc.
Poza tym, ten zapis mi się nie podoba:

Kod: Zaznacz cały

pacjent(string name="Anonim", string surname="Anonim", bool sex=true, int age=0, int weight=0, int pressure=0, double SugarLvl=0, pacjent *Next=NULL) : imie(name), nazwisko(surname), plec(sex), wiek(age), waga(weight), cisnienie(pressure), PoziomCukru(SugarLvl), next(NULL) {};
Czytelniej byłoby dodać drugi konstruktor, bez parametrów i w nim inicjalizować domyślnymi wartościami, np:

Kod: Zaznacz cały

pacjent::pacjent()
{
    name="Anonim";
    surname="Anonim";
    bool sex=true;
    // etc.
}
W C++ zamiast "NULL", wskazane jest używanie 0.

To rzeczy, które rzuciły mi się w oczy, mocno w kod się nie wczytywałem;) Poza tym, jeśli program działa, to znaczy, że jest dobrze napisany;) Jak mawia jeden z moich prowadzących, lepszy kiepski dobrze działający program, niż dobry kiepsko działający program.

gjakubow
-
Posty: 13
Rejestracja: 19 lip 2007, 23:59
Lokalizacja: Sopot

Post autor: gjakubow » 24 gru 2009, 9:54

Kod: Zaznacz cały

bool plec; // 0 - kobieta, 1 - mezczyzna
osobiście zawsze staram się unikać mało mówiących konstrukcji, czyli np:

Kod: Zaznacz cały

sex=true;
możesz np zdefiniować typ wyliczeniowy:

Kod: Zaznacz cały

typedef enum _Sex {
  SEX_MALE = 0,
  SEX_FEMALE
} Sex;

Sex plec;
//...
plec = SEX_FEMALE;
pozdrawiam, Grzegorz

ODPOWIEDZ