Sa se creeze o structura numita pacient in care se stocheaza numele, prenumele, data
nasterii si sectia in care este internat pacientul. Sa se creeze apoi functii pentru fiecare dintre
operatiile urmatoare:
● Preluarea datelor a n pacienti din fisierul pacient.in si stocarea lor intr-un vector cu
elemente de tip pacient.
● Adaugarea datelor unui pacient in vectorul anterior.
● Actualizarea fisierului anterior, cu noile date.
● Afisarea alfabetica a pacientilor
● Afisarea pacientilor dintr-o anumita sectie
● Afisarea pacientilor cu varsta >50
Răspunsuri la întrebare
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
struct data {
int zi;
int luna;
int an;
};
struct pacient {
char nume[30];
char prenume[30];
data data_nasterii;
int sectia;
};
void citire_pacienti(pacient pacienti[], int &nr_pacienti) {
ifstream fin("pacient.in");
fin >> nr_pacienti;
for (int i = 0; i < nr_pacienti; i++) {
fin >> pacienti[i].nume;
fin >> pacienti[i].prenume;
fin >> pacienti[i].data_nasterii.zi;
fin >> pacienti[i].data_nasterii.luna;
fin >> pacienti[i].data_nasterii.an;
fin >> pacienti[i].sectia;
}
}
void adaugare_pacient(pacient ad_pacient, pacient pacienti[], int &nr_pacienti) {
nr_pacienti++;
strcpy(pacienti[nr_pacienti - 1].nume, ad_pacient.nume);
strcpy(pacienti[nr_pacienti - 1].prenume, ad_pacient.prenume);
pacienti[nr_pacienti - 1].data_nasterii.zi = ad_pacient.data_nasterii.zi;
pacienti[nr_pacienti - 1].data_nasterii.luna = ad_pacient.data_nasterii.luna;
pacienti[nr_pacienti - 1].data_nasterii.an = ad_pacient.data_nasterii.an;
pacienti[nr_pacienti - 1].sectia = ad_pacient.sectia;
}
void actualizare_date(pacient pacienti[], int nr_pacienti) {
ofstream fout ("pacient.in");
fout << nr_pacienti << "\n";
for (int i = 0; i < nr_pacienti; i++) {
fout << pacienti[i].nume << " ";
fout << pacienti[i].prenume << " ";
fout << pacienti[i].data_nasterii.zi << " ";
fout << pacienti[i].data_nasterii.luna << " ";
fout << pacienti[i].data_nasterii.an << " ";
fout << pacienti[i].sectia << "\n";
}
}
void afisare_alfabetica(pacient pacienti[], int nr_pacienti) {
for (int i = 0; i < nr_pacienti - 1; i++) {
for (int j = i + 1; j < nr_pacienti; j++) {
if (strcmp(pacienti[i].nume, pacienti[j].nume) > 0)
swap(pacienti[i], pacienti[j]);
if (strcmp(pacienti[i].nume, pacienti[j].nume) == 0)
if (strcmp(pacienti[i].prenume, pacienti[j].prenume) > 0)
swap(pacienti[i], pacienti[j]);
}
}
cout << "Afisare alfabetica:\n";
for (int i = 0; i < nr_pacienti; i++) {
cout << pacienti[i].nume << " ";
cout << pacienti[i].prenume << " ";
cout << pacienti[i].data_nasterii.zi << " ";
cout << pacienti[i].data_nasterii.luna << " ";
cout << pacienti[i].data_nasterii.an << " ";
cout << pacienti[i].sectia << "\n";
}
}
void afisare_sectie(pacient pacienti[], int nr_pacienti, int sectie) {
cout << "Afisare pacienti sectie " << sectie << ":\n";
for (int i = 0; i < nr_pacienti; i++) {
if (pacienti[i].sectia == sectie) {
cout << pacienti[i].nume << " ";
cout << pacienti[i].prenume << " ";
cout << pacienti[i].data_nasterii.zi << " ";
cout << pacienti[i].data_nasterii.luna << " ";
cout << pacienti[i].data_nasterii.an << " ";
cout << pacienti[i].sectia << "\n";
}
}
}
void afisare_varstnici(pacient pacienti[], int nr_pacienti) {
cout << "Afisare pacienti cu varsta 50+:\n";
for (int i = 0; i < nr_pacienti; i++) {
int varsta = 2022 - pacienti[i].data_nasterii.an;
if (varsta > 50) {
cout << pacienti[i].nume << " ";
cout << pacienti[i].prenume << " ";
cout << pacienti[i].data_nasterii.zi << " ";
cout << pacienti[i].data_nasterii.luna << " ";
cout << pacienti[i].data_nasterii.an << " ";
cout << pacienti[i].sectia << "\n";
}
}
}
int main() {
int nr_pacienti;
pacient pacienti[100];
citire_pacienti(pacienti, nr_pacienti);
/* initializare a unei variabile de tip pacient
in scopul testarii functiei de adaugare in
lista de pacienti */
pacient ad_pacient;
strcpy(ad_pacient.nume, "Test");
strcpy(ad_pacient.prenume, "Testare");
ad_pacient.data_nasterii.zi = 1;
ad_pacient.data_nasterii.luna = 1;
ad_pacient.data_nasterii.an = 1950;
ad_pacient.sectia = 2;
adaugare_pacient(ad_pacient, pacienti, nr_pacienti);
actualizare_date(pacienti, nr_pacienti);
afisare_alfabetica(pacienti, nr_pacienti);
afisare_sectie(pacienti, nr_pacienti, 1);
afisare_varstnici(pacienti, nr_pacienti);
return 0;
}