-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.cpp
62 lines (54 loc) · 1.94 KB
/
main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/*
Proiect: Registru Discoteca implementare orientata pe obiecte C++
Autor: Alexa Constantin-Cosmin
Aceasta versiune nu necesita numarul de n persoane la inceputul fisierului
Se compileaza folosind comanda: g++ main.cpp Registru.cpp
*/
#include "Registru.h"
void citire(vector<Registru>& v,int frecventa[]){ // Declarare functiei de citire
cout << "Introduceti numele fisierului: ";
string fisier;
cin >> fisier; // citirea fisierului
ifstream fin{fisier}; // deschiderea fisierului
Registru p; // Varibila de tip Registru care va fi citita
while(fin >> p){ // Citirea din fisier pana la EOF
if(p.is_valid()){ // Verificarea validitatii
v.push_back(p); // Formarea vectorului
frecventa[p.anul()]++; // Vectorul de frecventa cu anii
}
}
}
void prelucrare(const vector<Registru>& v,int& ani, int& luni){
ani = 0;
luni = 0;
for(Registru p : v){ // Folosirea ranged loop fiind mai usor decat for(int i = 0;i < v.size(); i++)
ani += p.anul(); // Adunarea anilor
luni += p.luna(); // Adunarea lunilor
if(luni > 12){ // Verificarea lunilor sa nu prezinte valori peste un an
ani++;
luni/=12;
}
}
}
void afisare(const vector<Registru>& v,int frecventa[], int ani, int luni){
cout << "Introduceti fisierul de iesire: ";
string fisier;
cin >> fisier;
ofstream fout{fisier};
for(int i = 0; i < 100; i++)
if(frecventa[i] != 0){ // verificare de persoane existente cu ani
if(frecventa[i] == 1)
fout << "Este o persoana de " << i << " ani\n"; // Persoanelor cu aceeasi ani
else fout << "Sunt " << frecventa[i] << " persoane cu " << i << " ani\n";
}
fout << "Media de varsta este " << ani/v.size() << " " << luni/v.size() << endl; // Media ceruta a problemei
}
int main(){
vector<Registru> v; // vectorul de persoane
int frecventa[100] = { 0 }; // frecvanta anilor
int ani,luni; // anii si lunile persoanelor
citire(v, frecventa);
prelucrare(v, ani, luni); // apelurile functiilor
afisare(v, frecventa, ani, luni);
return 0;
}