|
zene200610_C++.cpp
|
|
1 #include <iostream>
2 #include <fstream>
3 #include <vector>
4 #include <map>
5 #include <string>
6 #include <algorithm> // transform
7
8 using namespace std;
9
10 struct dalok
11 {
12 int ado, perc, mp;
13 string ea_cim;
14 };
15
16 void kiir(int sorszam, string szoveg)
17 {
18 cout << "-------------------------------------------------------------------" << endl;
19 cout << sorszam << ". feladat - " << szoveg << endl;
20 cout << "-------------------------------------------------------------------" << endl;
21 }
22
23 void F1(vector<dalok> &m)
24 {
25 kiir(1,"Adatbeolvasás");
26 ifstream fbe;
27 fbe.open("musor.txt");
28 int zsz;
29 string sor;
30 dalok temp;
31 getline(fbe,sor);
32 zsz=atoi(sor.c_str());
33 cout << zsz << endl;
34 while(fbe>>temp.ado&&fbe>>temp.perc&&fbe>>temp.mp&&getline(fbe,sor))
35 {
36 sor=sor.substr(1,sor.length()); // itt az elején van egy szóköz, azt leszedjük
37 temp.ea_cim=sor;
38 m.push_back(temp);
39 }
40 /*
41 cout << "Vektor mérete: " << m.size() << endl;
42 for(auto e:m)
43 {
44 cout << e.ado << " " << e.perc << " " << e.mp << " " << e.ea_cim << endl;
45 }
46 */
47 fbe.close();
48 }
49
50 void F2(vector<dalok> m)
51 {
52 kiir(2,"Dalok száma az egyes adókon");
53 map<int,int> zene_db;
54 for(int i=1;i<4;i++) zene_db[i]=0;
55
56 for(auto e:m)
57 {
58 zene_db[e.ado]++;
59 }
60 for(int i=1;i<4;i++) printf("%d. adón: %d db zeneszám.\n",i,zene_db[i]);
61 }
62
63 void F3(vector<dalok> m)
64 {
65 kiir(3,"Eltelt idő az első és utolsó E.C. dal között (1. adó)");
66 int eltelt_ido=0, elso, utolso;
67 string keres="Eric Clapton", eloado;
68 dalok e;
69 bool eloszor=true;
70 for(int i=0;i<m.size();i++)
71 {
72 e=m[i];
73 eloado=e.ea_cim.substr(0,keres.length());
74 if(e.ado==1 && eloado==keres)
75 {
76 if(eloszor)
77 {
78 elso=i;
79 eloszor=false;
80 }
81 else
82 {
83 utolso=i;
84 }
85 }
86 }
87 for(int i=elso;i<utolso+1;i++)
88 {
89 e=m[i];
90 if(e.ado==1) eltelt_ido+=e.perc*60+e.mp;
91 }
92 printf("Eltelt idő: %d mp, ",eltelt_ido);
93 printf("azaz %d óra ",eltelt_ido/3600);
94 printf("%d perc %d másodperc\n",eltelt_ido%3600/60,eltelt_ido%3600%60);
95 }
96
97 void F4(vector<dalok> m)
98 {
99 kiir(4,"Omega:Legend hol ment, és mi szólt a többi adón");
100 map<int,string> utolsok;
101 for(int i=1;i<4;i++) utolsok[i]="";
102 string keres="";
103 int i=0, ado;
104 while(keres!="Omega:Legenda")
105 {
106 keres=m[i].ea_cim;
107 ado=m[i].ado;
108 utolsok[m[i].ado]=m[i].ea_cim;
109 i++;
110 }
111 cout << "Az Omega:Legenda a(z) " << ado << ". csatornán ment" << endl;
112 cout << "Közben a másik csatornákon:" << endl;
113 for(int i=1;i<4;i++)
114 {
115 if(i!=ado) cout << "\t" << i << ". csatornán: " << utolsok[i] << endl;
116 }
117 }
118
119 void F5(vector<dalok> m)
120 {
121 kiir(5,"Melyik dalokról lehet szó (ismert részlet)");
122 int x;
123 string keres, ec;
124 cout << "Olvasható részlet: ";
125 cin >> keres;
126
127 ofstream fki;
128 fki.open("keres.txt");
129 fki << keres << endl;
130 for(auto e:m)
131 {
132 ec=e.ea_cim;
133 transform(ec.begin(), ec.end(), ec.begin(), ::tolower);
134 x=0;
135 for(int i=0;i<ec.length();i++)
136 {
137 if(keres[x]==ec[i] && x<keres.length())
138 x++;
139 }
140 if(x==keres.length())
141 {
142 fki << e.ea_cim << endl; // hogy az eredeti előadó:cím szöveget írjuk ki
143 }
144 }
145 fki.close();
146 }
147
148 void F6(vector<dalok> m)
149 {
150 kiir(5,"Új műsor szerkezet - új műsoridő");
151 int ora=1, dal;
152 int hirek=3*60, bevezeto=1*60;
153 int ido=hirek, holtido;
154 for(auto e:m)
155 {
156 if(e.ado==1)
157 {
158 dal=bevezeto+e.perc*60+e.mp;
159 if(ido+dal>ora*3600)
160 {
161 holtido=ora*3600-ido;
162 ido+=(holtido+hirek+dal);
163 ora++;
164 }
165 else
166 {
167 ido+=dal;
168 }
169 }
170 }
171 cout << "1. rádió - Adás vége az új műsorszerkezetben: ";
172 printf("%d:%d:%d\n\n",ido/3600,ido%3600/60,ido%3600%60);
173 }
174
175 int main()
176 {
177 setlocale(LC_ALL,"");
178
179 vector<dalok> musor;
180 F1(musor);
181 F2(musor);
182 F3(musor);
183 F4(musor);
184 F5(musor);
185 F6(musor);
186
187 return 0;
188 }