Напишите программу,которая в последовательности натуральных чисел:
а) определяет сумму чисел,кратных 9;
б) считает количество двузначных чисел .
Программа получает на вход целые числа , количество введенных чисел неизвестно ,последовательность чисел заканчивается числом 0 (0- признак окончания ввода ,не входит в последовательность).
количество чисел не превышает 100.Введенные числа не превышают 10 000.
Программа должна вывести два числа -сумму все чисел кратных 9,и количество двузначных чисел.
Для того, чтобы получить адрес подсети, нужно выполнить поразрядную логическую операцию «И» между маской и IP-адресом (в двоичной системе счисления)
IP-адрес: 248.228. 60.240 = 11111000.11100100.00111100.11110000
Маска: ???.???.???.??? = ????????.????????.????????.????????
Подсеть: 248.228. 56. 0 = 11111000.11100100.00111000.00000000
Так как в маске сначала идут все единицы, а потом все нули, то в третьем байте маски должно быть значение 11111000(2) = 248(10)
2)
Переведем значения из третьих байтов в двоичную систему счисления:155(10) = 10011011(2); 145(10) = 10010001(2)
В данных числах одинаковы четыре старших разряда (1001), поэтому в маске единичными могут быть четыре разряда, следовательно максимальное значение третьего байта маски = 11110000(2) = 240(10)
3)
Для того, чтобы получить адрес подсети, нужно выполнить поразрядную логическую операцию «И» между маской и IP-адресом (в двоичной системе счисления)
IP-адрес: 241.185.253. 57 = 11110001.10111001.11111101.00111001
Маска: ???.???.???.??? = ????????.????????.????????.????????
Подсеть: 241.185.252. 0 = 11110001.10111001.11111100.00000000
Так как в маске сначала идут все единицы, а потом все нули, то максимальное значение, которое может быть в третьем байте маски это 11111110(2) и, следовательно, наименьшее возможное количество нулей в двоичной записи маски подсети = 1+8 = 9
См. рисунок - там нагляднее.
//t1.txt должен быть в папке с программой
//Pascal
var
f: text;
numValue, Counts, n, c, t, i: integer;
begin
assign(f, 't1.txt');
reset(f);
Counts := 0;
c := 0;
while not eof(f) do
begin
readln(f, n);
if (c = 0) or (n = t) then
c := c + 1
else
c := 1;
t := n;
if c > Counts then
begin
Counts := c;
numValue := n
end
end;
close(f);
assign(f, 't2.txt');
rewrite(f);
writeln('Длина цепочки: ', Counts);
for i := 1 to Counts do
writeln(f, numValue);
close(f)
end.