М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
samojlenko15
samojlenko15
13.07.2021 20:10 •  Информатика

Написать программу которая сумму всех цифр пятизначного числа х который вводится с клавиатуры и определит заканчивается ли эта сумма на три и четная эта сумма или нет информатика 8 класс

👇
Ответ:
усенок
усенок
13.07.2021
Program n1;
var a: longint;
procedure sumdig(var x: longint);
var s:longint;
begin
s:=0;
while ( x<>0 ) do
begin
s := s + (x mod 10);
x := x div 10;
end;
if s mod 10=3 then writeln('оканчивается на 3')
else writeln('не оканчивается на 3');
if s mod 2=0 then writeln('четная') else
writeln('нечетная');
end;
begin
writeln('введите целое число');
readln(a);
sumdig(a);
end.
4,4(48 оценок)
Открыть все ответы
Ответ:
kurolesov71
kurolesov71
13.07.2021
{
Если что, часть программы не нужна для построения цепочки. Она просто иллюстрирует, что полученный результат верен.
}

var
 sq : array[0..999] of array[0..9] of boolean;
 co : array[0..999] of integer;
 ar : array[1..10003] of 0..9;
  i,j: integer;
 x: integer;
 t : boolean;
 begin
 for i := 0 to 999 do
   begin
   for j := 0 to 9 do
   sq[i][j] := false;
   co[i] := 0;
   end;
 for i := 1 to 3 do
   ar[i] := 0;
 i := 3;
 t := true;
 {write('000');}
 while t do
   begin
   i := i + 1;
   x := ar[i-3]*100 + ar[i-2]*10 + ar[i-1];
   if co[x] >= 10 then t := false
     else
     begin
     j := 1;
     while sq[x][j] do 
       j := (j + 1) mod 10;
     ar[i] := j;
     sq[x][j] := true;
     co[x] := co[x] + 1;
     {write(j)}
     end;
   end;
 {writeln;}
 writeln('Length: ',i - 1);

 {просто чтобы убедиться}
 for i := 0 to 999 do
   for j := 0 to 9 do
   sq[i][j] := false;

  t := true;
 j := 0;
 i := 1;
 while (i <= 10000) and t do
   begin
   x := ar[i] * 100 + ar[i+1] * 10 + ar[i+2];
   if sq[x][ar[i+3]] then t := false
     else
     begin
     sq[x][ar[i+3]] := true;
     j := j + 1;
     end;
   i := i + 1
   end;
 if t and (j = 10000) then
   write('Confirmed')
end.
4,6(89 оценок)
Ответ:
palnikov2000
palnikov2000
13.07.2021

Переводим третий байт IP и адреса сети в двоичную систему

50 - 110010

48 - 110000

Так как это байт (а в байте 8 бит), допишем два незначащих нуля к получившимся числам:

00110010 - IP

00110000 - адрес сети

Адрес сети получается с применения поразрядной конъюнкции к маске и IP, проще говоря, при перемножении разрядов маски и IP-адреса. И в маске всегда сначала идут только единицы, а потом только нули. То есть можно записать так:

- маска

00110010 - IP

00110000 - адрес сети

где иксы в маске и цифры в IP-адресе - множители, а разряды адреса сети - произведение.

На 3 и 4 месте в маске однозначно должны быть единицы, т.к. если там будут нули, то и в адресе сети будут нули. Плюс к этому, в маске всегда сначала идут только единицы, а потом только нули, то есть можно записать так:

1111 - маска

00110010 - IP

00110000 - адрес сети

Второй справа разряд IP-адреса - единица, а адреса сети - ноль, значит в маске может быть только ноль:

1111хх00 - маска

00110010 - IP

00110000 - адрес сети

Оставшиеся два икса могут быть и единицами, и нулями. Нужно наименьшее возможное значение, значит поставим на их место нули:

11110000 - маска

00110010 - IP

00110000 - адрес сети

То есть третий байт маски 11110000, переведём в десятичную - получим 240.

4,5(49 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ