Advertisement
Weper

3._feladat

Apr 26th, 2015
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.26 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <conio.h>
  4. #include <string>
  5. #include <algorithm>
  6. #include <iomanip>
  7. using namespace std;
  8. const char vMagan[] { 'a', 'e', 'i', 'u', 'o', 'A', 'E', 'I', 'U', 'O' };
  9. const char* last = vMagan + sizeof(vMagan) / sizeof(char);
  10.  
  11. struct szo
  12. {
  13.     string s;
  14.     //char s[21];  //az állományból beolvasott szó
  15.     int hossz;  //a szó karaktereinek száma
  16.     int mgh;    //a szóban lévő magánhangzók száma
  17. };
  18.  
  19.  
  20. class szavak
  21. {
  22. private:
  23.     szo *p;
  24.     int n;
  25.     int db; //sorok száma
  26.  
  27. public:
  28.     szavak();
  29.     int Sorhossz(string szo1);
  30.     void Tisztit();
  31.     void HosszMeghatarozas() { for (int i = 0; i < n; i++) p[i].hossz = p[i].s.length(); };
  32.     void MghMeghataroz();
  33.     void Kiir();
  34.     int Getn() { return n * 3; };
  35.     string Leghosszabb();
  36.     int Megszamol();
  37.     void Lista();
  38.  
  39. };
  40.  
  41. int szavak::Sorhossz(string szo1)
  42. {
  43.     int hossz = szo1.length();
  44.     return hossz;
  45. }
  46.  
  47.  
  48.  
  49. szavak::szavak()
  50. {
  51.     ifstream be("davy.txt");
  52.     db = 0;
  53.     n = 0;
  54.     if (!be)
  55.     {
  56.         cerr << "Nincs ilyen fájl!" << endl;
  57.         _getch();
  58.         exit(-1);
  59.     }
  60.     int hossz2;
  61.     string szo2;
  62.    
  63.     while (!be.eof())
  64.     {
  65.         getline(be, szo2);
  66.  
  67.         if (!be.eof())
  68.         {
  69.             hossz2 = Sorhossz(szo2);
  70.  
  71.             for (int j = 0; j < hossz2; j++)
  72.                 if (szo2[j] == ' ') n++;
  73.  
  74.             if (!be.eof()) db++;
  75.         }
  76.  
  77.     }
  78.     p = new szo[n];
  79.  
  80.     be.clear();
  81.     be.seekg(0, ios::beg);
  82.     n--;
  83.     for (int i = 0; i < n; i++)
  84.     {
  85.        
  86.         be >> p[i].s;
  87.     }
  88.  
  89. }
  90.  
  91.  
  92.  
  93. string filter1(const string &strText)
  94. {
  95.     string strTemp;
  96.     copy_if(strText.cbegin(), strText.cend(), back_inserter(strTemp), ::isalpha);
  97.  
  98.     return strTemp;
  99. }
  100.  
  101.  
  102.  
  103.  
  104. void szavak::Tisztit()
  105. {
  106.     for (int i = 0; i < n; i++)
  107.         p[i].s = filter1(p[i].s);
  108.  
  109. }
  110.  
  111.  
  112.  
  113. void szavak::MghMeghataroz()
  114. {
  115.  
  116.  
  117.     for (int i = 0; i < n; i++)
  118.     {
  119.         p[i].mgh = 0;
  120.  
  121.         for_each(p[i].s.cbegin(), p[i].s.cend(), [&](char ch)
  122.         {
  123.             if (find(vMagan, last, ch) != last) ++p[i].mgh;
  124.         });
  125.     }
  126.  
  127. }
  128.  
  129. string szavak::Leghosszabb()
  130. {
  131.     int max = 0;
  132.     for (int i = 0; i < n; i++)
  133.     {
  134.         if (p[i].hossz > p[max].hossz) max = i;
  135.     }
  136.     return p[max].s;
  137. }
  138.  
  139. int szavak::Megszamol()
  140. {
  141.     int darab = 0;
  142.     int msh;
  143.     for (int i = 0; i < n; i++)
  144.     {
  145.         msh = p[i].hossz - p[i].mgh;
  146.         if (p[i].mgh > msh) darab++;
  147.     }
  148.     return darab;
  149. }
  150.  
  151.  
  152. void szavak::Lista()
  153. {
  154.     int darab = 0;
  155.     int msh;
  156.     for (int i = 0; i < n; i++)
  157.     {
  158.         msh = p[i].hossz - p[i].mgh;
  159.         if (p[i].mgh > msh)
  160.         {
  161.             cout << darab+1 << ".:  " << p[i].s << "; ";
  162.             darab++;
  163.  
  164.         }
  165.     }
  166. }
  167.  
  168. void szavak::Kiir()
  169. {
  170.     cout << right << setw(30) << "Szó:" << setw(16)  << "Mgh.:"  << setw(10) << "Hossz:" << endl;
  171.     for (int i = 0; i < n; i++)
  172.     {
  173.  
  174.         cout << right << setw(5) << i + 1 << ". adat: " << setw(20) << right << p[i].s << setw(10) << p[i].mgh << setw(10) << p[i].hossz << endl;
  175.        
  176.     }
  177. }
  178.  
  179. int main()
  180. {
  181.     setlocale(LC_ALL, "HUN");
  182.     szavak a;
  183.  
  184.     a.Tisztit();
  185.    
  186.     cout << endl;
  187.     a.MghMeghataroz();
  188.     a.HosszMeghatarozas();
  189.    
  190.     cout << endl;
  191.     cout << "Adatok száma: " << a.Getn() << endl;
  192.     cout << "A leghosszabb szó: " << a.Leghosszabb() << endl;
  193.     cout << endl;
  194.     cout << "Hány olyan szó van, amiben több mgh. van, mint msh.?: " << a.Megszamol() << " db." << endl;
  195.     cout << "Ezeknek a szavaknak a listája:" << endl;
  196.     a.Lista();
  197.     cout << endl;
  198.     cout << endl;
  199.     a.Kiir();
  200.     _getch();
  201.     return 0;
  202. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement