-
Notifications
You must be signed in to change notification settings - Fork 0
/
P14.cpp
44 lines (39 loc) · 1.26 KB
/
P14.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
#include <stdlib.h>
struct Ip {
unsigned char address[4];
unsigned size;
};
struct Ip * readData(int n) {
struct Ip * addresses = (struct Ip*) malloc(n * sizeof(struct Ip));
int i;
for(i = 0; i < n; i++) {
scanf("%hhu.%hhu.%hhu.%hhu,%u ",
&addresses[i].address[0],
&addresses[i].address[1],
&addresses[i].address[2],
&addresses[i].address[3],
&addresses[i].size);
}
return addresses;
}
void getMinMax(struct Ip * addresses, int n, struct Ip * min, struct Ip * max) {
*min = *max = addresses[0];
int i;
for (i = 0; i < n; i++) {
if(min->size > addresses[i].size) *min = addresses[i];
if(max->size < addresses[i].size) *max = addresses[i];
}
}
int main() {
int n;
scanf("%d", &n);
struct Ip * addresses = readData(n);
struct Ip max, min;
getMinMax(addresses, n, &min, &max);
printf("%hhu.%hhu.%hhu.%hhu,%u\n%hhu.%hhu.%hhu.%hhu,%u\n",
min.address[0], min.address[1], min.address[2], min.address[3], min.size,
max.address[0], max.address[1], max.address[2], max.address[3], max.size);
free(addresses);
return 0;
}