Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <conio.h>
- #include <string>
- #include <algorithm>
- #include <iomanip>
- using namespace std;
- const char vMagan[] { 'a', 'e', 'i', 'u', 'o', 'A', 'E', 'I', 'U', 'O' };
- const char* last = vMagan + sizeof(vMagan) / sizeof(char);
- struct szo
- {
- string s;
- //char s[21]; //az állományból beolvasott szó
- int hossz; //a szó karaktereinek száma
- int mgh; //a szóban lévő magánhangzók száma
- };
- class szavak
- {
- private:
- szo *p;
- int n;
- int db; //sorok száma
- public:
- szavak();
- int Sorhossz(string szo1);
- void Tisztit();
- void HosszMeghatarozas() { for (int i = 0; i < n; i++) p[i].hossz = p[i].s.length(); };
- void MghMeghataroz();
- void Kiir();
- int Getn() { return n * 3; };
- string Leghosszabb();
- int Megszamol();
- void Lista();
- };
- int szavak::Sorhossz(string szo1)
- {
- int hossz = szo1.length();
- return hossz;
- }
- szavak::szavak()
- {
- ifstream be("davy.txt");
- db = 0;
- n = 0;
- if (!be)
- {
- cerr << "Nincs ilyen fájl!" << endl;
- _getch();
- exit(-1);
- }
- int hossz2;
- string szo2;
- while (!be.eof())
- {
- getline(be, szo2);
- if (!be.eof())
- {
- hossz2 = Sorhossz(szo2);
- for (int j = 0; j < hossz2; j++)
- if (szo2[j] == ' ') n++;
- if (!be.eof()) db++;
- }
- }
- p = new szo[n];
- be.clear();
- be.seekg(0, ios::beg);
- n--;
- for (int i = 0; i < n; i++)
- {
- be >> p[i].s;
- }
- }
- string filter1(const string &strText)
- {
- string strTemp;
- copy_if(strText.cbegin(), strText.cend(), back_inserter(strTemp), ::isalpha);
- return strTemp;
- }
- void szavak::Tisztit()
- {
- for (int i = 0; i < n; i++)
- p[i].s = filter1(p[i].s);
- }
- void szavak::MghMeghataroz()
- {
- for (int i = 0; i < n; i++)
- {
- p[i].mgh = 0;
- for_each(p[i].s.cbegin(), p[i].s.cend(), [&](char ch)
- {
- if (find(vMagan, last, ch) != last) ++p[i].mgh;
- });
- }
- }
- string szavak::Leghosszabb()
- {
- int max = 0;
- for (int i = 0; i < n; i++)
- {
- if (p[i].hossz > p[max].hossz) max = i;
- }
- return p[max].s;
- }
- int szavak::Megszamol()
- {
- int darab = 0;
- int msh;
- for (int i = 0; i < n; i++)
- {
- msh = p[i].hossz - p[i].mgh;
- if (p[i].mgh > msh) darab++;
- }
- return darab;
- }
- void szavak::Lista()
- {
- int darab = 0;
- int msh;
- for (int i = 0; i < n; i++)
- {
- msh = p[i].hossz - p[i].mgh;
- if (p[i].mgh > msh)
- {
- cout << darab+1 << ".: " << p[i].s << "; ";
- darab++;
- }
- }
- }
- void szavak::Kiir()
- {
- cout << right << setw(30) << "Szó:" << setw(16) << "Mgh.:" << setw(10) << "Hossz:" << endl;
- for (int i = 0; i < n; i++)
- {
- cout << right << setw(5) << i + 1 << ". adat: " << setw(20) << right << p[i].s << setw(10) << p[i].mgh << setw(10) << p[i].hossz << endl;
- }
- }
- int main()
- {
- setlocale(LC_ALL, "HUN");
- szavak a;
- a.Tisztit();
- cout << endl;
- a.MghMeghataroz();
- a.HosszMeghatarozas();
- cout << endl;
- cout << "Adatok száma: " << a.Getn() << endl;
- cout << "A leghosszabb szó: " << a.Leghosszabb() << endl;
- cout << endl;
- cout << "Hány olyan szó van, amiben több mgh. van, mint msh.?: " << a.Megszamol() << " db." << endl;
- cout << "Ezeknek a szavaknak a listája:" << endl;
- a.Lista();
- cout << endl;
- cout << endl;
- a.Kiir();
- _getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement