Informatică, întrebare adresată de raluca4547, 8 ani în urmă

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

Răspuns de crow9920
1

#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;

}

Alte întrebări interesante