1  #include <iostream>
  2  #include <fstream>
  3  #include <string>
  4  #include <iomanip>
  5  
  6  using namespace std;
  7  
  8  string ip[500];
  9  int N;
 10  string ipx;
 11  string resz[8];
 12  
 13  void kiir(int sorszam)
 14  {
 15      cout << sorszam << ". feladat" << endl;
 16  }
 17  
 18  void F1()
 19  {
 20      ifstream be;
 21      be.open("ip.txt");
 22      int i=0;
 23      while(!be.eof())
 24      {
 25          be >> ip[i]; cout << ip[i] << endl;
 26          i++;
 27      }
 28      N=i-1;
 29      be.close();
 30  }
 31  
 32  void F2()
 33  {
 34      cout << "Az állományban " << N << " darab adatsor van" << endl;
 35  }
 36  
 37  void F3()
 38  {
 39      ofstream ki2;
 40      ki2.open("rendezett.txt");
 41      string ip2[500];
 42      for(int i=0;i<N;i++) { ip2[i]=ip[i]; }
 43      for(int i=0;i<N-1;i++)
 44      {
 45          for(int j=i+1;j<N;j++)
 46          {
 47              if(ip2[i]>ip2[j])
 48              {
 49                  swap(ip2[i],ip2[j]);
 50              }
 51          }
 52      }
 53      for(int i=0;i<N;i++) ki2 << ip2[i] << endl;
 54      ki2.close();
 55      cout << "A legalacsonyabb tárolt IP-cím:" << endl;
 56      cout << ip2[0] << endl;
 57  
 58  }
 59  
 60  void F4()
 61  {
 62      string d="2001:0db8";
 63      string g="2001:0e";
 64      string h1="fc";
 65      string h2="fd";
 66      string s;
 67      int ddb=0, gdb=0, hdb=0;
 68      for(int i=0;i<N;i++)
 69      {
 70          if(ip[i].substr(0,9)==d) ddb++;
 71          if(ip[i].substr(0,7)==g) gdb++;
 72          if(ip[i].substr(0,2)==h1||ip[i].substr(0,2)==h2) hdb++;
 73      }
 74      cout << "Dokumentációs cím: " << ddb << endl;
 75      cout << "Globális egyedi cím: " << gdb << endl;
 76      cout << "Helyi egyedi cím: " << hdb << endl;
 77  }
 78  
 79  void F5()
 80  {
 81      ofstream ki;
 82      ki.open("sok.txt");
 83      int nulla;
 84      int hatar=18;
 85      string ssz;
 86      for(int i=0;i<N;i++)
 87      {
 88          nulla=0;
 89          for(int j=0;j<ip[i].length();j++)
 90          {
 91              if(ip[i][j]=='0') nulla++;
 92          }
 93          if(nulla>=hatar)
 94          {
 95              ki << i+1 << " " << ip[i] << endl;
 96              cout << i+1 << " " << ip[i] << endl;
 97          }
 98      }
 99      ki.close();
100  }
101  
102  void F6()
103  {
104      int ssz;
105      cout << "Kérek egy sorszámot: ";
106      cin >> ssz; int i=ssz-1;
107      int index=0;
108      cout << ip[i] << endl;
109  
110      for(int j=0;j<8;j++)
111      {
112          resz[j]=ip[i].substr(j*5,4);
113      }
114      cout << endl;
115      for(int i=0;i<8;i++)
116      {
117          while(resz[i][0]=='0')
118          {
119              resz[i]=resz[i].substr(1,4);
120  
121          }
122          if(resz[i].length()==0) resz[i]="0";
123          if(i<7)
124          {
125              ipx+=resz[i]+":";
126          }
127          else
128          {
129              ipx+=resz[i];
130          }
131      }
132      cout << "A rövidített IP-cím:" << endl;
133      cout << ipx << endl;
134  }
135  
136  void F7()
137  {
138      int max=0;
139      int db=0, hely;
140      for(int i=0;i<8;i++)
141      {
142          if(resz[i]=="0")
143          {
144              int j=i+1;
145              while(resz[j]=="0")
146              {
147                  j++;
148              }
149              db=j-i;
150              if(db>max)
151              {
152                  max=db; db=0;
153                  hely=i;
154              }
155              i=j;
156          }
157      }
158      cout << "Lehetséges rövidítés helye: " << hely << ", száma: " << max << endl;
159      for(int i=hely;i<hely+max;i++)
160      {
161          resz[i]="";
162      }
163      ipx="";
164      for(int i=0;i<8;i++)
165      {
166          if(resz[i]!="")
167          {
168              if(i<7) ipx+=resz[i]+":";
169              else ipx+=resz[i];
170          }
171          if(resz[i]==""&&hely%5==i) ipx+=":";
172      }
173  
174      cout << endl << ipx << endl;
175  }
176  
177  int main()
178  {
179      setlocale(LC_ALL, "hun");
180      kiir(1);
181      F1();
182      kiir(2);
183      F2();
184      kiir(3);
185      F3();
186      kiir(4);
187      F4();
188      kiir(5);
189      F5();
190      kiir(6);
191      F6();
192      kiir(7);
193      F7();
194      return 0;
195  }