1  #include <iostream>
  2  #include <fstream>
  3  #include <string>
  4  #include <windows.h>
  5  #include <iomanip>  //precision miatt
  6  
  7  using namespace std;
  8  
  9  #define N 1000
 10  
 11  string szavak[N];
 12  int SZ, ot; //ot - az ötbetûs szavak száma
 13  
 14  void kiir(int szam)
 15  {
 16      cout << "--------------------" << endl;
 17      cout << szam << ". feladat" << endl;
 18      cout << "--------------------" << endl;
 19  }
 20  
 21  int maganhangzo(string szo)
 22  {
 23      int db=0;
 24      char mh[5]={'a', 'e', 'i', 'o', 'u'};
 25  
 26      for(int i=0;i<szo.length();i++)
 27      {
 28          for(int j=0;j<5;j++)
 29          {
 30              if(szo[i]==mh[j])
 31              {
 32                  db++;
 33              }
 34          }
 35      }
 36  
 37      return db;
 38  }
 39  
 40  void F1()
 41  {
 42      string be;
 43  
 44      cout << "Kérek egy szót: ";
 45      cin >> be;
 46      int mennyi=maganhangzo(be);
 47      if(mennyi >0) cout << "Van benne magánhangzó." << " db: " << mennyi;
 48      else cout << "Nincs benne magánhangzó.";
 49  
 50      cout << endl;
 51  }
 52  
 53  void F2()
 54  {
 55      ifstream be;
 56      be.open("szoveg.txt");
 57  
 58      string s;
 59      string max="";
 60      int i=0;
 61      while(!be.eof())
 62      {
 63          be >> s;
 64          if(s.length()>max.length()) max=s;
 65          i++;
 66      }
 67      SZ=i-1; //beolvasott szavak száma! 3. feladathoz jó lesz!
 68      cout << "A leghosszab szó: " << max << endl;
 69      be.close();
 70  }
 71  
 72  void F3()
 73  {
 74      ifstream be;
 75      be.open("szoveg.txt");
 76  
 77      string s;
 78      string max="";
 79      int db=0;
 80      while(!be.eof())
 81      {
 82          be >> s;
 83          if(maganhangzo(s)>s.length()/2)
 84          {
 85              cout << s << " ";
 86              db++;
 87          }
 88      }
 89      cout << endl;
 90      be.close();
 91  
 92      cout << "Talált szavak száma: " << db << " db." << endl;
 93      cout << "Összes szavak száma: " << SZ << " db." << endl;
 94  
 95      cout << "Százalékban: " << db << "/" << SZ << " : ";
 96      cout.precision(4);
 97      cout << (float) db/SZ*100 << "%" << endl;
 98  }
 99  
100  void F4()
101  {
102      ifstream be;
103      be.open("szoveg.txt");
104  
105      string s;
106      ot=0;          //Feltetelzhetjuk, hogy lesznek 5 betûs szavak
107  
108      for(int i=0;i<SZ;i++)
109      {
110          be >> s;
111          if(s.length()==5)
112          {
113              szavak[ot]=s;
114              ot++;
115          }
116      }
117      be.close();
118  
119      string harom;
120      cout << "Kérek egy 3 karakteres szórészletet: ";
121      cin >> harom;
122  
123      for(int i=0;i<ot;i++)
124      {
125          if(szavak[i].substr(1,3)==harom)            //1,3 mert 0 1 ... a karakterek indexelése
126          {
127              cout << szavak[i] << " ";
128          }
129      }
130      cout << endl;
131  }
132  
133  void F5()
134  {
135      //Rendezéssel is megoldható, de lehet más megoldás is
136      //Próbáljuk meg a középsõ három karakter szerint rendezni a szavakat
137      for(int i=0;i<ot-1;i++)
138      {
139          for(int j=i+1;j<ot;j++)
140          {
141              if(szavak[i].substr(1,3)>szavak[j].substr(1,3))
142              {
143                  swap(szavak[i],szavak[j]);
144              }
145          }
146      }
147      ofstream ki;
148      ki.open("letra.txt");
149  
150      //Most nézzük a rendezett tömb szavainak a közepét
151      bool enter=false;
152      for(int i=1;i<ot;i++)
153      {
154          if(szavak[i].substr(1,3)==szavak[i-1].substr(1,3))
155          {
156              ki << szavak[i-1] << endl;
157              enter=true;
158          }
159          else
160          {
161              if(enter)
162              {
163                  ki << szavak[i-1] << endl;
164                  ki << endl;
165              }
166              enter=false;
167          }
168      }
169      ki.close();
170  }
171  
172  int main()
173  {
174      setlocale(LC_ALL, "hun");
175      kiir(1);
176      F1();
177      kiir(2);
178      F2();
179      kiir(3);
180      F3();
181      kiir(4);
182      F4();
183      kiir(5);
184      F5();
185      return 0;
186  }