• API
• FAQ
• Tools
• Archive
SHARE
TWEET

# Untitled

a guest Oct 22nd, 2019 91 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. #include <stdio.h>
2.
3. void task0(unsigned int IP_1, unsigned MSK_2) {
4.     unsigned int help=255; //setam o variabila ajutatoare
5.     printf("-0 %u.%u.%u.%u/%u\n", (IP_1 >> 24), ((IP_1 >> 16) & help) , ((IP_1 >> 8) & help), (IP_1 & help), MSK_2); //afisez task 0
6. }
7.
9.     printf("-1 "); //afisez numarul taskului
10.     for(int i=0;i < 4; i++){ //merg prin cei 4 octeti
11.         int oct = 0; //initializez de fiecare data cu 0
12.         for(int j=7;j>=0;j--){
13.             if(MSK_2 != 0){
14.                 oct += (1 << j);
15.                 MSK_2--;
16.             }
17.         } //formez numarul zecimal
18.         if(i==3){
19.             printf("%d", oct);
20.         } else {
21.             printf("%d.", oct);
22.         }
23.
24.     }
25.     printf("\n");
26. }
27.
29.     unsigned int help = 255;//setam o variabila ajutatoare
30.      printf("-2 %o.%o.%o.%o ", (MSK_1 >> 24), ((MSK_1 >> 16) & help) , ((MSK_1 >> 8) & help), (MSK_1 & help)); //afisez octal
31.      printf("%X.%X.%X.%X\n", (MSK_1 >> 24), ((MSK_1 >> 16) & help) , ((MSK_1 >> 8) & help), (MSK_1 & help)); //afisez hexa cu litere mari
32. }
33.
34. void task3(unsigned int IP_1, unsigned int MSK_2){
35.     unsigned int contor=24;
36.     printf("-3 ");
37.     for(int i = 0; i < 4; i++){
38.         int oct = 0;
39.         for(int j = 7; j >= 0; j--){
40.             if(MSK_2 != 0){
41.                 oct += (1 << j);
42.                 MSK_2--;
43.             }
44.         }if (i==3){
45.             printf("%u\n", ((IP_1 >> contor) & oct));
46.         } else {
47.             printf("%u.", ((IP_1 >> contor) & oct));
48.         }
49.         contor-=8;
50.
51.     }
52. }
53.
54. void task4(unsigned int IP_1, unsigned int MSK_2){
55.     unsigned int help = 255, contor=24;
56.     printf("-4 ");
57.
58.     for(int i = 0; i < 4; i++){
59.         unsigned char oct = 0;
60.         for(int j = 7; j >= 0; j--){
61.             if(MSK_2 != 0){
62.                 oct += (1 << j);
63.                 MSK_2--;
64.             }
65.         }
66.         unsigned char byte_1, byte_2, byte_3, byte_4;
67.         switch(i){
68.             case 0:
69.             //byte 1
70.                 byte_1 = (IP_1 >> 24);
71.                 byte_1 = (byte_1 | (~oct));
72.                 printf("%u.", byte_1);
73.                 break;
74.             case 1:
75.             //byte 2
76.                 byte_2 = ((IP_1 >> 16) & help);
77.                 byte_2 = (byte_2 | (~oct));
78.                 printf("%u.", byte_2);
79.                 break;
80.             case 2:
81.             //byte 3
82.                 byte_3 = ((IP_1 >> 8) & help);
83.                 byte_3 = (byte_3 | (~oct));
84.                 printf("%u.", byte_3);
85.                 break;
86.             case 3:
87.             //byte 4
88.                 byte_4 = (IP_1 & help);
89.                 byte_4 = (byte_4 | (~oct));
90.                 printf("%u\n", byte_4);
91.                 break;
92.             default:
93.                 break;
94.         }
95.
96.         contor-=8;
97.     }
98. }
99.
100.
101.
102. void task5(unsigned int IP_1, unsigned int IP_2, unsigned int MSK_2){
103.     printf("-5 ");
104.     unsigned int help = 255, contor=24, test=1;
105.     for(int i = 0; i < 4; i++){
106.         unsigned int oct = 0;
107.         for(int j = 7; j >= 0; j--){
108.             if(MSK_2 != 0){
109.                 oct += (1 << j);
110.                 MSK_2--;
111.             }
112.         }
113.         if(contor == 24){
114.             if(((IP_1 >> contor) & oct) != ((IP_2 >> contor) & oct)){
115.                 test = 0;
116.             }
117.         }
118.         if(contor == 16 || contor == 8){
119.             if((((IP_1 >> contor) & help) & oct) != (((IP_2 >> contor) & help) & oct)){
120.                 test = 0;
121.             }
122.         }
123.         if(contor == 0){
124.             if(((IP_1 & help) & oct) != ((IP_2 & help) & oct)){
125.                 test = 0;
126.             }
127.         }
128.         contor-=8;
129.
130.     }
131.     if(test){
132.         printf("DA\n");
133.     } else {
134.         printf("NU\n");
135.     }
136.
137. }
138.
140.     unsigned int help=255;
142.         printf("-7 %u.%u.%u.%u\n", (MSK_1 >> 24), ((MSK_1 >> 16) & help) , ((MSK_1 >> 8) & help), (MSK_1 & help));
143.     } else {
144.         unsigned test1 = 0, bit_semnificativ;
145.         for(int i=31; i >= 0; i--) {
146.             if((MSK_1 & (1 << i))==0){
147.                 test1 = 1;
148.             }
149.             if((MSK_1 & (1 << i)) > 0 && test1){
150.                  bit_semnificativ = i;
151.                  break;
152.             }
153.         }
154.         for(int i = bit_semnificativ; i >= 0; i--){
155.             MSK_1 = (MSK_1 & (~(1 << i)));
156.         }
157.         printf("-7 %u.%u.%u.%u\n", (MSK_1 >> 24), ((MSK_1 >> 16) & help) , ((MSK_1 >> 8) & help), (MSK_1 & help));
158.
159.     }
160. }
161.
162.
163. void task8 (unsigned int IP_1){
164.     printf("-8 ");
165.     unsigned int help = 255;
166.
167.
168.     //byte 1
169.     unsigned int byte_1 = (IP_1 >> 24);
170.     for(int i = 7; i >= 0; i--){
171.         if (byte_1 & (1 << i)){
172.             printf("1");
173.         }else{
174.             printf("0");
175.         }
176.     }
177.     printf(".");
178.
179.
180.     //byte2
181.     unsigned int byte_2 = ((IP_1 >> 16) & help);
182.     for(int i = 7; i >= 0; i--){
183.         if (byte_2 & (1 << i)){
184.             printf("1");
185.         }else{
186.             printf("0");
187.         }
188.     }
189.     printf(".");
190.
191.     //byte 3
192.     unsigned int byte_3 = ((IP_1 >> 8) & help);
193.     for(int i = 7; i >= 0; i--){
194.         if (byte_3 & (1 << i)){
195.             printf("1");
196.         }else{
197.             printf("0");
198.         }
199.     }
200.     printf(".");
201.
202.     //byte 4
203.     unsigned int byte_4 = (IP_1 & help);
204.     for(int i = 7; i >= 0; i--){
205.         if (byte_4 & (1 << i)){
206.             printf("1");
207.         }else{
208.             printf("0");
209.         }
210.     }
211.
212.     printf("\n");
213. }
214.
215.
216.
217. int main () {
218.     freopen("input", "r", stdin);
219.     int SET_DATE=1, contor_set=1;
220.     scanf("%d ", &SET_DATE);
221.
222.     while(SET_DATE != 0){
223.         unsigned int IP_1=0, MSK_2=0, MSK_1=0, IP_2=0, N=0;
224.         printf("%d\n", contor_set);
225.
226.         for (int i = 0; i < 4; i++) { //citesc MSK_1
227.             int x;
228.             if(i==3){
229.                 scanf("%d ", &x);
230.             }else {
231.                 scanf("%d.", &x);
232.             }
233.             MSK_1 ^= x << ((4 - i - 1) * 8);
234.         }
235.
236.         scanf("%u", &MSK_2); //citesc MSK_2
237.
238.         for (int i = 0; i < 4; i++) { //citesc IP_1
239.             int x;
240.             if(i==3){
241.                 scanf("%d ", &x);
242.             }else {
243.                 scanf("%d.", &x);
244.             }
245.             IP_1 ^= x << ((4 - i - 1) * 8);
246.         }
247.
248.         for (int i = 0; i < 4; i++) { //citesc IP_2
249.             int x;
250.             if(i==3){
251.                 scanf("%d ", &x);
252.             }else {
253.                 scanf("%d.", &x);
254.             }
255.             IP_2 ^= x << ((4 - i - 1) * 8);
256.         }
257.
262.         task4(IP_1, MSK_2);//de lucrat la ea
265.
266.         //task 6, avem nevoie de el la 7
267.
268.         unsigned test1 = 0, final=1,test_task7;
269.         for(int i=31; i >= 0; i--) {
270.             if((MSK_1 & (1 << i))==0){
271.                 test1 = 1;
272.             }
273.             if((MSK_1 & (1 << i)) > 0 && test1){
274.                 final = 0;
275.             }
276.         }
277.         if(final){
278.             printf("-6 DA\n");
280.         } else {
281.             printf("-6 NU\n");
283.         }
284.
288.         //de aici incepe chinul
289.         //citiim cele N pentru a rezolva taskul 9
290.         scanf("%u ", &N); //citesc N
291.         printf("-9 ");
292.         for(unsigned int i = 0; i < N; i++){
294.             for (int j = 0; j < 4; j++) { //citesc
295.                 unsigned int x;
296.                 if(j==3){
297.                     scanf("%u ", &x);
298.                 }else {
299.                     scanf("%u.", &x);
300.                 }
301.                 ADRESA_N ^= x << ((4 - j - 1) * 8);
302.             }
303.
304.             scanf("/%u ", &nr_biti);
305.             //printf("nr biti: %u\n", nr_biti);
307.             unsigned int help = 255;
308.             while(nr_biti !=0){
309.                 MASK += (1 << aux);
310.                 aux--;
311.                 nr_biti--;
312.             }
315.
317.                 printf("%u ", i);
318.             }
319.         }
320.         printf("\n");
321.
322.         SET_DATE--;
323.         contor_set++;
324.     }
325.     return 0;
326. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.

Top