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  }