1 #include <iostream>
2 #include <fstream>
3 #include <string>
4 #include <windows.h>
5
6 using namespace std;
7
8 string sz[300];
9 string r[300];
10 int N;
11
12 string szorendezo(string a)
13 {
14 for(int i=0;i<a.length()-1;i++)
15 for(int j=i+1;j<a.length();j++)
16 {
17 if(a[i]>a[j]) swap(a[i],a[j]);
18 }
19 return a;
20 }
21
22 void F1()
23 {
24 string be;
25
26 cout << "Szöveg:";
27 cin >> be;
28
29 if(be.length()>0)
30 {
31 //rendezés
32 be=szorendezo(be);
33 cout << "Rendezve: " << be << endl;
34
35 //számolás
36 int db=1;
37 for(int i=1;i<be.length();i++)
38 {
39 if(be[i]!=be[i-1]) db++;
40 }
41 cout << "A különböző karakterek száma: " << db << endl;
42 }
43 else
44 {
45 cout << "Üres szöveg: " << 0 << " db karakter" << endl;
46 }
47 }
48
49 void F2()
50 {
51 ifstream be;
52 be.open("szotar.txt");
53
54 int i=0;
55 while(!be.eof())
56 {
57 be >> sz[i];
58 i++;
59 }
60 //szavak száma
61 N=i;
62 be.close();
63 }
64
65 void F3()
66 {
67 ofstream ki;
68 ki.open("abc.txt");
69
70 for(int i=0;i<N;i++)
71 {
72 r[i]=szorendezo(sz[i]);
73 ki << r[i] << endl;
74 cout << r[i] << endl;
75 }
76 ki.close();
77 }
78
79 void F4()
80 {
81 string a, b;
82
83 cout << "Kérek 2 szót!" << endl;
84 cout << "1. szó: ";
85 cin >> a;
86 cout << "2. szó: ";
87 cin >> b;
88
89 if(szorendezo(a)==szorendezo(b))
90 {
91 cout << "Anagramma" << endl;
92 }
93 else
94 {
95 cout << "Nem anagramma" << endl;
96 }
97 }
98
99 void F5()
100 {
101 string t;
102
103 cout << "Kérek egy szót: ";
104 cin >> t;
105 t=szorendezo(t);
106
107 int db=0;
108 cout << "Találatok:" << endl;
109 for(int i=0;i<N;i++)
110 {
111 if(t==r[i])
112 {
113 cout << sz[i] << endl;
114 db++;
115 }
116 }
117 if(db==0) cout << "Nincs a szótárban anagramma" << endl;
118 }
119
120 void F6()
121 {
122 //r és sz tömb rendezése szavak hossza szerint csökkenőbe,
123 //azonos szóhosszúság esetén ABC rend szerint rendezünk
124 for(int i=0;i<N-1;i++)
125 for(int j=i+1;j<N;j++)
126 {
127 if(r[i].length()<r[j].length()||(r[i].length()==r[j].length()&&r[i]<=r[j]))
128 {
129 swap(r[i],r[j]);
130 swap(sz[i],sz[j]);
131 }
132 }
133
134 int s=0;
135 while(r[s].length()==r[0].length()){
136 cout << r[s] << " eredeti: " << sz[s] << endl;
137 s++;
138 }
139 }
140
141 void F7(){
142
143 //Hosszúság szerint növekvően, azon belül ABC rendbe rendezzük az r tömböt,
144 //és vele párhuzamosan az sz tömböt is átrendezzük. Hasonlóan a 6. feladathoz.
145 for(int i=0;i<N-1;i++)
146 for(int j=i+1;j<N;j++)
147 {
148 if(r[i].length()>r[j].length()||(r[i].length()==r[j].length()&&r[i]>=r[j]))
149 {
150 swap(r[i],r[j]);
151 swap(sz[i],sz[j]);
152 }
153 }
154
155 ofstream ki;
156 ki.open("rendezve.txt");
157 for(int i=0;i<N;i++){
158 if(sz[i].length()==sz[i+1].length() && i<N-1){
159 //anagrammák egymás mellé kerülnek
160 if(r[i] == r[i+1]){
161 ki << sz[i] << " ";
162 }else{
163 ki << sz[i] << endl;
164 }
165 }else{
166 if(i==N-1){
167 ki << sz[i];
168 }else{
169 ki << sz[i] << endl << endl;
170 }
171 }
172 }
173 ki.close();
174 }
175
176 int main()
177 {
178 setlocale(LC_ALL, "hun");
179 F1();
180 F2();
181 F3();
182 F4();
183 F5();
184 F6();
185 F7();
186 return 0;
187 }