Advertisement
Weper

3. feladat(bovitve)

Apr 25th, 2015
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.33 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. int szavak::Sorhossz(string szo1)
  41. {
  42.     int hossz = szo1.length();
  43.     return hossz;
  44. }
  45.  
  46. szavak::szavak()
  47. {
  48.     ifstream be("davy.txt");
  49.     db = 0;
  50.     n = 0;
  51.     if (!be)
  52.     {
  53.         cerr << "Nincs ilyen fájl!" << endl;
  54.         _getch();
  55.         exit(-1);
  56.     }
  57.     int hossz2;
  58.     string szo2;
  59.    
  60.     while (!be.eof())
  61.     {
  62.         getline(be, szo2);
  63.  
  64.         if (!be.eof())
  65.         {
  66.             hossz2 = Sorhossz(szo2);
  67.  
  68.             for (int j = 0; j < hossz2; j++)
  69.                 if (szo2[j] == ' ') n++;
  70.  
  71.             if (!be.eof()) db++;
  72.         }
  73.  
  74.     }
  75.     p = new szo[n];
  76.  
  77.     be.clear();
  78.     be.seekg(0, ios::beg);
  79.     n--;
  80.     for (int i = 0; i < n; i++)
  81.     {
  82.        
  83.         be >> p[i].s;
  84.     }
  85.  
  86. }
  87.  
  88.  
  89.  
  90. void szavak::Tisztit()
  91. {
  92.     int hossz2 = 0;
  93.     for (int i = 0; i < n; i++)
  94.     {
  95.         hossz2 = p[i].s.length();
  96.         for (int j = 0; j < hossz2; i++)
  97.             if (p[i].s[j] == '.' || p[i].s[j] == ',' || p[i].s[j] == '?'
  98.                 || p[i].s[j] == '"' || p[i].s[j] == ';') p[i].s.erase(j);
  99.     }
  100.    
  101.     for (int i = 0; i < n; i++) cout << p[i].s << " ";
  102. }
  103.  
  104. void szavak::MghMeghataroz()
  105. {
  106.  
  107.  
  108.     for (int i = 0; i < n; i++)
  109.     {
  110.         p[i].mgh = 0;
  111.  
  112.         for_each(p[i].s.cbegin(), p[i].s.cend(), [&](char ch)
  113.         {
  114.             if (find(vMagan, last, ch) != last) ++p[i].mgh;
  115.         });
  116.     }
  117.  
  118. }
  119.  
  120. string szavak::Leghosszabb()
  121. {
  122.     int max = 0;
  123.     for (int i = 0; i < n; i++)
  124.     {
  125.         if (p[i].hossz > p[max].hossz) max = i;
  126.     }
  127.     return p[max].s;
  128. }
  129.  
  130. int szavak::Megszamol()
  131. {
  132.     int darab = 0;
  133.     int msh;
  134.     for (int i = 0; i < n; i++)
  135.     {
  136.         msh = p[i].hossz - p[i].mgh;
  137.         if (p[i].mgh > msh) darab++;
  138.     }
  139.     return darab;
  140. }
  141.  
  142.  
  143. void szavak::Lista()
  144. {
  145.     int darab = 0;
  146.     int msh;
  147.     for (int i = 0; i < n; i++)
  148.     {
  149.         msh = p[i].hossz - p[i].mgh;
  150.         if (p[i].mgh > msh)
  151.         {
  152.             cout << darab+1 << ".:  " << p[i].s << "; ";
  153.             darab++;
  154.  
  155.         }
  156.     }
  157. }
  158.  
  159. void szavak::Kiir()
  160. {
  161.     cout << right << setw(30) << "Szó:" << setw(16)  << "Mgh.:"  << setw(10) << "Hossz:" << endl;
  162.     for (int i = 0; i < n; i++)
  163.     {
  164.  
  165.         cout << right << setw(5) << i + 1 << ". adat: " << setw(20) << right << p[i].s << setw(10) << p[i].mgh << setw(10) << p[i].hossz << endl;
  166.        
  167.     }
  168. }
  169.  
  170. int main()
  171. {
  172.     setlocale(LC_ALL, "HUN");
  173.     szavak a;
  174.  
  175.     //a.Tisztit();
  176.    
  177.     cout << endl;
  178.     a.MghMeghataroz();
  179.     a.HosszMeghatarozas();
  180.    
  181.     cout << endl;
  182.     cout << "Adatok száma: " << a.Getn() << endl;
  183.     cout << "A leghosszabb szó: " << a.Leghosszabb() << endl;
  184.     cout << endl;
  185.     cout << "Hány olyan szó van, amiben több mgh. van, mint msh.?: " << a.Megszamol() << " db." << endl;
  186.     cout << "Ezeknek a szavaknak a listája:" << endl;
  187.     a.Lista();
  188.     cout << endl;
  189.     cout << endl;
  190.     a.Kiir();
  191.     _getch();
  192.     return 0;
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement