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 }