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  }