1  #include <iostream>
  2  #include <fstream>
  3  #include <string>
  4  #include <stdlib.h>
  5  
  6  using namespace std;
  7  
  8  struct uz{
  9      int n, r;   // n - nap sorszáma, r - amatőr rádiós azonosítója
 10      string uzenet;
 11  } adas[220];    //11 nap 20 rádiós, max 11*20=220 adás lehet
 12  
 13  int N;  // Fájlból beolvasott sorok száma, azaz az ADAS tömb elemeinek száma
 14  
 15  void kiir(int ssz)
 16  {
 17      cout << "----------------------------------" << endl;
 18      cout << ssz << ". feladat" << endl;
 19      cout << "----------------------------------" << endl;
 20  }
 21  
 22  void F1()
 23  {
 24      string enter;
 25  
 26      ifstream fbe;
 27      fbe.open("veetel.txt");
 28      int i=0;
 29      while(!fbe.eof())
 30      {
 31          fbe >> adas[i].n;
 32          fbe >> adas[i].r;
 33  
 34          cout << i << " " << adas[i].n << " " << adas[i].r << endl;
 35  
 36          getline(fbe,enter);     //Muszáj beolvasni egyet a getline-nal, hogy a következő getline a rendes sort olvassa be!!!
 37          getline(fbe,adas[i].uzenet);
 38          cout << adas[i].uzenet << endl;
 39  
 40          i++;
 41      }
 42      fbe.close();
 43      N=i-1;      // A szokásos forrásfájlvégi üres sor miatt!!!!
 44      cout << "Adatok száma: " << N << endl;
 45  }
 46  
 47  void F2()
 48  {
 49      //Egy hülye feladat...
 50      cout << "Az első üzenet rögzítője: " << adas[0].r << endl;
 51      cout << "Az utolsó üzenet rögzítője: " << adas[N-1].r << endl;
 52  }
 53  
 54  void F3()
 55  {
 56      string keres="farkas";
 57      int talal;
 58  
 59      for(int i=0;i<N;i++)    //kiválogatás
 60      {
 61          talal=adas[i].uzenet.find("farkas");
 62          if(talal>=0)
 63          {
 64              cout << adas[i].n << ". nap " << adas[i].r << ". rádióamatőr" << endl;
 65          }
 66      }
 67  }
 68  
 69  void F4()
 70  {
 71      int napok[11]={0};
 72      for(int i=0;i<N;i++)    //megszámlálás, egy tipikus feladat (LOTTÓ, stb.)
 73      {
 74          napok[adas[i].n-1]++;
 75      }
 76      //kiírás
 77      for(int i=0;i<11;i++)
 78      {
 79          cout << i+1 << ". nap: " << napok[i] << " rádióamatőr" << endl;
 80      }
 81  }
 82  
 83  void F5()
 84  {
 85      string alap="";
 86      for(int i=0;i<90;i++) alap=alap+'#';   // Létrehozunk egy alap szöveget 90 # karakterből
 87  
 88      string ujuzenet[11];    // Ebben lesznek a helyreállított üzenetek a 11 napra vonatkozóan
 89      for(int i=0;i<11;i++) ujuzenet[i]=alap; //Kezdetben csupa # karaktert talrtalmaznak, 90 hosszúságban
 90      for(int i=0;i<N;i++)    //Minden adatot megnézünk
 91      {
 92          for(int j=0;j<90;j++)   //Minden eredeti üzenet is 90 karakteres
 93          {
 94              if(adas[i].uzenet[j]!='#')  //Ha nem #-t tartalmazó karakternél vagyunk, akkor...
 95              {
 96                  ujuzenet[adas[i].n-1][j]=adas[i].uzenet[j];   //Az adott napnak megfelelő (adas[i].n-1) új üzenet megkapja az adott
 97                                                                //eredeti üzenet karakterét! Kihasználjuk, hogy nincs ellentmondás
 98                                                                //az egyes üzenetek között
 99              }
100          }
101      }
102  
103      //Kiírás a képernyőre és a fájlba is!
104      ofstream fki;
105      fki.open("adaas.txt");
106      for(int i=0;i<11;i++)
107      {
108          cout << i+1 << ". nap: " << ujuzenet[i] << endl;
109          fki << ujuzenet[i] << endl;
110      }
111      fki.close();
112  }
113  
114  bool szame(string szo)
115  {
116      bool valasz=true;
117      for(int i=0;i<szo.length();i++)
118      {
119          if(szo[i]<'0' || szo[i]>'9') valasz=false;
120      }
121      return valasz;
122  }
123  
124  void F7()
125  {
126      int nap, radios, felnott, kolyok, found;
127      string f_temp,k_temp;
128      cout << "Adja meg a nap sorszámát! "; cin >> nap;
129      cout << "Adja meg a rádióamatőr sorszámát! "; cin >> radios;
130      int i=0, p1, p2;
131      //KERESÉS
132      while(i<N&&!(adas[i].n==nap&&adas[i].r==radios))
133      {
134          i++;
135      }
136      if(i<N)
137      {
138          p1=adas[i].uzenet.find('/');
139          f_temp=adas[i].uzenet.substr(0,p1);
140          p2=adas[i].uzenet.find(' ');
141          k_temp=adas[i].uzenet.substr(p1+1,p2-p1-1);
142  
143          if(szame(f_temp)&&szame(k_temp))
144          {
145              felnott=atoi(f_temp.c_str());
146              kolyok=atoi(k_temp.c_str());
147  
148              cout << "Megfigyelt egyedek száma: " << felnott+kolyok;
149          }
150          else
151          {
152              cout << "Nincs információ";
153          }
154      }
155      else
156      {
157          cout << "Nincs ilyen feljegyzés";
158      }
159  
160      cout << endl;
161  }
162  
163  int main()
164  {
165      setlocale(LC_ALL, "hun");
166      kiir(1);
167      F1();
168      kiir(2);
169      F2();
170      kiir(3);
171      F3();
172      kiir(4);
173      F4();
174      kiir(5);
175      F5();
176      kiir(7);
177      F7();
178      return 0;
179  }