Что бы определить IP сети, зная адрес узла и маску сети, для начала нужно перевести неполные байты маски (то есть те, значения которых меньше 255) и соответствующие им байты адреса узла в двоичную СС:
x.x.254.139 -> х.х.11111110.10001011
х.х.240.0 -> х.х.11110000.00000000
Запишем интересующие нас байты друг над другом и выполним поразрядную конъюнкцию:
11111110.10001011
11110000.00000000
Получаем:
11110000.0000000
Данная двоичная запись представляет собой два последних байта адреса сети. Т.к в первые 2 байта маски равны 255, то соответственные им байты адреса узла не изменятся. Переведём полученную двоичную запись в 10-СС:
// PascalABC.NET 3.0, сборка 1150 от 22.01.2016 begin var n:=ReadInteger('Количество элементов массива '); var m:=ArrRandom(n,-50,50); m.Println(', '); var a:=0; var b:=0; var c:=0; for var i:=0 to n-1 do begin if m[i]>0 then a:=a+m[i]; if m[i]<m[b] then b:=i; if m[i] mod 5 = 0 then Inc(c) end; var w:=(b+1)+a/(c+1); WritelnFormat('A={0}, B={1}, C={2}, W={3}',a,b+1,c,w); Writeln('Принято, что элементы массива нумеруются от единицы') end.
Тестовое решение: Количество элементов массива 13 -43, -15, 18, -8, -13, -47, -36, 6, -16, 45, 33, 33, -24 A=135, B=6, C=2, W=51 Принято, что элементы массива нумеруются от единицы
Специально для вас выловил ошибки, находящиеся в предыдущем решении. Кому-то не повезло :(
//PascalABC var S : array[1..10000] of integer; A, B, C, i, N, min : integer; W : real; begin write('Укажите размер массива > '); readln(N); write('Вводите элементы массива > '); for i := 1 to N do readln(S[i]);
A := 0; min := S[1]; C := 0; for i := 1 to N do begin if S[i] > 0 then A := A + S[i]; if S[i] < min then begin B := i; min := S[i]; end; if S[i] mod 5 = 0 then C := C + 1; end; W := B + A / (C + 1); writeln('Сумма элементов ', A); writeln('Номер минимального эл-та ', B); writeln('Количество кратных пяти ', C); writeln('Параметр W ', W); end.
211.64.240.0
Объяснение:
Что бы определить IP сети, зная адрес узла и маску сети, для начала нужно перевести неполные байты маски (то есть те, значения которых меньше 255) и соответствующие им байты адреса узла в двоичную СС:
x.x.254.139 -> х.х.11111110.10001011
х.х.240.0 -> х.х.11110000.00000000
Запишем интересующие нас байты друг над другом и выполним поразрядную конъюнкцию:
11111110.10001011
11110000.00000000
Получаем:
11110000.0000000
Данная двоичная запись представляет собой два последних байта адреса сети. Т.к в первые 2 байта маски равны 255, то соответственные им байты адреса узла не изменятся. Переведём полученную двоичную запись в 10-СС:
11110000.0000000 -> 240.0
Отсюда имеем адрес сети:
211.64.240.0