1 // Érettségi Kézikönyv 2.0 - (C) Ódor Péter 2023
2
3 #include <iostream>
4 #include <fstream>
5 #include <vector>
6 #include <map>
7 #include <list>
8 #include <algorithm>
9 #include <cmath>
10
11 using namespace std;
12
13 struct nezo
14 {
15 string vnev;
16 string knev;
17 int ferfi;
18 int berletes;
19 };
20
21 struct meccs
22 {
23 string datum;
24 string kezdes;
25 int belepo;
26 string tipus;
27 int nezoszam;
28 int bevetel; // 7. feladathoz
29 int berletes; // 8. feladathoz
30 };
31
32 struct belepes
33 {
34 int nezoid;
35 int meccsid;
36 string idopont;
37 };
38
39 void F1nezo(map<int,nezo> &n)
40 {
41
42 ifstream fbe;
43 fbe.open("nezo.txt");
44 nezo t;
45 int id;
46 while(fbe>>id&&fbe>>t.vnev&&fbe>>t.knev&&fbe>>t.ferfi&&fbe>>t.berletes)
47 {
48 n[id]=t;
49 }
50 /*
51 for(auto ms:n)
52 {
53 t=ms.second;
54 cout << ms.first << " " << t.vnev << " " << t.knev << " " << t.ferfi << " " << t.berletes << endl;
55 }
56 */
57 fbe.close();
58 }
59
60 void F1meccs(map<int,meccs> &m)
61 {
62 ifstream fbe;
63 fbe.open("meccs.txt");
64 meccs t;
65 t.nezoszam=0;
66 t.bevetel=0;
67 t.berletes=0;
68 int id;
69 while(fbe>>id&&fbe>>t.datum&&fbe>>t.kezdes&&fbe>>t.belepo&&fbe>>t.tipus)
70 {
71 m[id]=t;
72 }
73 /*
74 for(auto ms:m)
75 {
76 t=ms.second;
77 cout << ms.first << " " << t.datum << " " << t.kezdes << " " << t.belepo << " " << t.tipus << endl;
78 }
79 */
80 fbe.close();
81 }
82
83 void F1belepes(vector<belepes> &b)
84 {
85 ifstream fbe;
86 fbe.open("belepes.txt");
87 belepes t;
88 while(fbe>>t.nezoid&&fbe>>t.meccsid&&fbe>>t.idopont)
89 {
90 b.push_back(t);
91 }
92 /*
93 for(auto bel:b)
94 {
95 cout << bel.nezoid << " " << bel.meccsid << " " << bel.idopont << endl;
96 }
97 fbe.close();
98 */
99 }
100
101 void sorting_a_vector(vector<string> &r,bool novekvo)
102 {
103 if(novekvo) sort(r.begin(),r.end());
104 else sort(r.begin(),r.end(),greater<>());
105 }
106
107 void F2(map<int,meccs> m)
108 {
109 cout << "----------------------------------- 2.feladat -----------------------------------" << endl;
110 cout << "Mérkőzések időrendben:" << endl;
111 vector<string> datumok;
112 for(auto ms:m)
113 {
114 if(ms.second.tipus=="bajnoki") datumok.push_back(ms.second.datum);
115 }
116 sorting_a_vector(datumok,true);
117 //sort(datumok.begin(),datumok.end());
118 ofstream fki;
119 fki.open("bajnoki.txt");
120 for(auto d:datumok)
121 {
122 cout << d << endl;
123 fki << d <<endl;
124 }
125 fki.close();
126 }
127
128 void F3(map<int,meccs> m)
129 {
130 cout << "----------------------------------- 3.feladat -----------------------------------" << endl;
131 cout << "Utolsó meccsre a jegy ára:" << endl;
132 vector<string> datumok;
133 for(auto ms:m)
134 {
135 datumok.push_back(ms.second.datum);
136 }
137 sorting_a_vector(datumok,false);
138 for(auto ms:m)
139 {
140 if(ms.second.datum==datumok[0])
141 {
142 cout << ms.second.belepo << " Ft (" << datumok[0] <<")" << endl;
143 break;
144 }
145 }
146 }
147
148 void F4(map<int,meccs> &m,vector<belepes> b)
149 {
150 cout << "----------------------------------- 4.feladat -----------------------------------" << endl;
151 cout << "Nézőszámok az egyes meccseken:" << endl;
152 vector<pair<string,int>> datum_nezoszam;
153 map<string,int> temp;
154 for(auto be:b)
155 {
156 m[be.meccsid].nezoszam++;
157 }
158 for(auto be:b)
159 {
160 temp[m[be.meccsid].datum]=m[be.meccsid].nezoszam;
161 }
162 for(auto items:temp)
163 {
164 datum_nezoszam.push_back(items);
165 }
166 sort(datum_nezoszam.begin(),datum_nezoszam.end());
167 for(auto elem:datum_nezoszam)
168 {
169 cout << elem.first << " " << elem.second << endl;
170 }
171 }
172
173 void F5(map<int,meccs> m,map<int,nezo> n,vector<belepes> b)
174 {
175 cout << "----------------------------------- 5.feladat -----------------------------------" << endl;
176 cout << "Bevétel 2018 szeptemberében jegyeladásból:" << endl;
177 int bevetel=0;
178 for(int i=0;i<b.size();i++)
179 {
180 if(n[b[i].nezoid].berletes==0)
181 {
182 if(m[b[i].meccsid].datum.substr(0,7)=="2018.09") bevetel+=m[b[i].meccsid].belepo;
183 }
184 }
185 cout << bevetel << " Ft" << endl;
186 }
187
188 void F6(map<int,meccs> m,map<int,nezo> n,vector<belepes> b)
189 {
190 cout << "----------------------------------- 6.feladat -----------------------------------" << endl;
191 cout << "Kiss Dorina és Varga Zsolt ezeken a meccseken voltak együtt:" << endl;
192 vector<string> datum_kiss;
193 vector<string> datum_kozos;
194 for(int i=0;i<b.size();i++)
195 {
196 if(n[b[i].nezoid].vnev+" "+n[b[i].nezoid].knev=="Kiss Dorina")
197 {
198 datum_kiss.push_back(m[b[i].meccsid].datum);
199 }
200 }
201 for(auto datum:datum_kiss)
202 {
203 for(int i=0;i<b.size();i++)
204 {
205 if(n[b[i].nezoid].vnev+" "+n[b[i].nezoid].knev=="Varga Zsolt"&&m[b[i].meccsid].datum==datum)
206 {
207 datum_kozos.push_back(m[b[i].meccsid].datum);
208 }
209 }
210 }
211 sort(datum_kozos.begin(),datum_kozos.end());
212 for(auto datum:datum_kozos)
213 {
214 cout << datum << endl;
215 }
216 }
217
218 void F7(map<int,meccs> m,map<int,nezo> n,vector<belepes> b)
219 {
220 cout << "----------------------------------- 7.feladat -----------------------------------" << endl;
221 cout << "A legtöbb bevételt hozó meccs dátuma:" << endl;
222 for(auto bx:b)
223 {
224 if(n[bx.nezoid].berletes==0)
225 {
226 m[bx.meccsid].bevetel+=m[bx.meccsid].belepo;
227 }
228 }
229 int max_bevetel=0;
230 string max_datum;
231 for(auto ms:m)
232 {
233 if(ms.second.bevetel>max_bevetel)
234 {
235 max_bevetel=ms.second.bevetel;
236 max_datum=ms.second.datum;
237 }
238 }
239 cout << max_datum << endl;
240 }
241
242 void F8(map<int,meccs> m,map<int,nezo> n,vector<belepes> b)
243 {
244 cout << "----------------------------------- 8.feladat -----------------------------------" << endl;
245 cout << "Bérletes nézők átlagos száma a bajnokság során:" << endl;
246 vector<int> berletesek;
247 for(auto bx:b)
248 {
249 if(n[bx.nezoid].berletes==-1)
250 {
251 m[bx.meccsid].berletes+=1;
252 }
253 }
254 for(auto ms:m)
255 {
256 berletesek.push_back(ms.second.berletes);
257 }
258 cout << round(accumulate(berletesek.begin(), berletesek.end(), 0.0) / berletesek.size()) << " fő (kerekítve)";
259 }
260
261 int main()
262 {
263 setlocale(LC_ALL,"");
264 map<int,nezo> nezok;
265 map<int,meccs> meccsek;
266 vector<belepes> belepesek;
267 F1nezo(nezok);
268 F1meccs(meccsek);
269 F1belepes(belepesek);
270 F2(meccsek);
271 F3(meccsek);
272 F4(meccsek,belepesek);
273 F5(meccsek,nezok,belepesek);
274 F6(meccsek,nezok,belepesek);
275 F7(meccsek,nezok,belepesek);
276 F8(meccsek,nezok,belepesek);
277 return 0;
278 }