Python! 1.Напишите функцию для получения строки из первых n символов другой строки. Если длина строки меньше n, верните первоначальный строку.
2.Напишите функцию, которая принимает два слова в качестве входных данных, и напечатайте дольше слово.Якщо слова имеют одинаковую длину, то функция должна напечатать слова в отдельных строках.
3.Напишите функцию для подсчета произведения всех элементов в списке целых чисел.
Для того, чтобы получить адрес подсети, нужно выполнить поразрядную логическую операцию «И» между маской и 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
См. рисунок - там нагляднее.
Типовая задача на разбор случаев. Разбирать случаи будем не простым последовательным перечислением, а более сложной конструкцией из вложенных условных операторов.
Решение задачи.
Var a1, b1, c1, {коэффициенты уравнения первой прямой}
a2,b2,c2, {коэффициенты уравнения второй прямой}
x, y : Real; {координаты точки пересечения }
BEGIN
ReadLn( a1, b1, c1);
ReadLn( a2, b2, c2);
If ( (a1=0) and (b1=0) ) or ( (a2=0) and (b2=0) )
then WriteLn( 'это не прямая (прямые). ' )
else
if (a1*b2=a2*b1) and (a1*c2=a2*c1) {условие совпадения}
then WriteLn( 'прямые совпадают.' )
else
if a1*b2 = a2*b1 {условие параллельности}
then WriteLn('прямые параллельны.')
else begin x:=(c1*b2-c2*b1)/(b1*a2-b2*a1);
y:=(c2*a1-c1*a2)/(b1*a2-b2*a1);
WriteLn('координаты точки пересечения :',
' x = ', x : 5 : 2 , ', y = ', y : 5 : 2);
end;
END.