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 }