bogdanNiculeasa

Program citire angajati din fisier

Mar 8th, 2023
731
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.02 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. struct persoana {
  8.     int codAngajat;
  9.     char numePrenume[30];
  10.     char specializare[20];
  11.     char departament[25];
  12.     int numarZile;
  13.     int varsta;
  14.     int luna;
  15.     char sex;
  16. };
  17.  
  18.  
  19. ifstream fin("date.in");
  20. ofstream fout("date.out");
  21.  
  22. void afisare(persoana p);
  23. void creare(persoana angajati[],int n, persoana angajatiSpecializare[], char specializare[20], int &contor);
  24. void citire (persoana angajati[], int n);
  25. void afisare(persoana angajati[], int n);
  26.  
  27. /**
  28. Pentru un departament citit de la tastatura, sa se arate cati angajati are departament
  29. */
  30. int main()
  31. {
  32.     int n, numarAngajatiSpecializare = 0;
  33.     fin >> n;
  34.     struct persoana angajati[n];
  35.     struct persoana angajatiAceeasiSpecializare[n];
  36.     citire(angajati, n);
  37.     afisare(angajati, n);
  38.  
  39.     cout << "Introduceti numele departamentului pentru care doriti sa vedeti numarul de angajati: ";
  40.     char departament[25];
  41.     cin.getline(departament, 25);
  42.     int numarDeAngajati = 0;
  43.     for (int i = 0; i < n; i++) {
  44.         if (strcmp(angajati[i].departament, departament) == 0) {
  45.             numarDeAngajati++;
  46.         }
  47.     }
  48.     fout << "In departamentul: " << departament << " sunt " << numarDeAngajati <<" angajati" << endl;
  49.  
  50.  
  51.     cout << "Introduceti specializarea pentru care doriti sa filtrati angajati: ";
  52.     char specializare[20];
  53.     cin.getline(specializare, 20);
  54.     creare(angajati, n, angajatiAceeasiSpecializare, specializare,numarAngajatiSpecializare);
  55.  
  56.     fout << "Angajatii cu aceeasi specializare sunt: " << endl;
  57.     afisare(angajatiAceeasiSpecializare, numarAngajatiSpecializare);
  58.  
  59.     cout << "Verificati fisierul de output pentru a vedea rezultatele.";
  60.     return 0;
  61. }
  62.  
  63. void creare(persoana angajati[],int n, persoana angajatiSpecializare[], char specializare[20], int &contor){
  64.     for (int i = 0; i < n; i++) {
  65.         if (strcmp(angajati[i].specializare, specializare) == 0) {
  66.             angajatiSpecializare[contor] = angajati[i];
  67.             contor++;
  68.         }
  69.     }
  70. }
  71.  
  72. void citire (persoana angajati[], int n) {
  73.     cout << "n = " << n << endl;
  74.     for (int i = 0; i < n; i++) {
  75.         fin >> angajati[i].codAngajat;
  76.         fin.ignore();
  77.         fin.getline(angajati[i].numePrenume, 30);
  78.         fin.getline(angajati[i].specializare, 20);
  79.         fin.getline(angajati[i].departament, 25);
  80.         fin >> angajati[i].sex;
  81.     }
  82. }
  83.  
  84. void afisare(persoana angajati[], int n) {
  85.     fout << "Afisare angajati: " << endl;
  86.     for (int i = 0; i < n; i++) {
  87.         fout << "Angajat #"<<(i+1)<<": " <<endl;
  88.         afisare(angajati[i]);
  89.     }
  90.     fout << "------------------------\n\n\n\n";
  91. }
  92.  
  93. void afisare(persoana p) {
  94.     fout << "Codul de angajat: " << p.codAngajat << endl;
  95.     fout << "Nume: " << p.numePrenume << endl;
  96.     fout << "Specializarea angajatului: " << p.specializare << endl;
  97.     fout << "Departamentul angajatului: " << p.departament << endl;
  98.     fout << "Sexul angajatului: " << p.sex << endl;
  99. }
  100.  
Advertisement
Add Comment
Please, Sign In to add comment