swaTor
13.01.2022 22:58

Создать программу "Машина" в кумир-стандарт рисователь​

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
FarHowl
16.02.2021 00:10

1. Сначала нужно найти минимальную длину кода, который позволит занумеровать 800 человек. Понятно, что

800<2^n, где n - минимально.

Ясно, что n=10, потому что

512=2^9 < 800 < 2^10=1024

 

Ну а теперь совсем просто. Учащихся 320, код каждого 10бит, поэтому общий объём информации

320*10=3200бит = 3200/8 = 400байт.

 

Вот и всё.

 

 

Ну и ещё. 1. Понятно, что такую кодировку можно использовать, пока учащихся меньше 1025.

                   2. Приведенные рассуждения действительны для кодов одинаковой длины, существуют и другие коды, например, разной длины, самым известным представителем которой является код(азбука) Морзе. В этой кодировке, например, коды

1, 01, 001, 0001 - РАЗНЫЕ коды.

                   3. Из условия задачи не ясно, о какой кодировке идёт речь, но если о другой, то количество информации тоже несложно посчитать, правда, необходимо, например, зарезервировать какой-то код для разделителя, отделяющего один код от другого(у Морзе это немного более длинная пауза между символами, чем между 0 1(точкой и тире). Существуют и другие коды, например Брайля(для слепых), в котором, например РАЗНЫМ объектам соответствуют ОДИНАКОВЫЕ коды, напрмер, буквы А,Б,Ц,Д  и цифры 1,2,3,4 кодируются одинаково, но там есть спец коды-регистры, определяющие, ЧТО будет идти за ними. И вообще оптимальное кодирование - это целая сложная наука, использующая самые последние достижения математики.

 

Успехов!

 

 

0,0(0 оценок)
Ответ:
chesht
22.08.2021 05:37

Program n_1;

var a:array [1..1000] of integer; i, buf:integer;

begin

  for i:=1 to 1000 do read(a[i]); //Вводим массив

   for i:=1 to 500 do begin //Переворачиваем массив

       buf:=a[i];

       a[i]:=a[1001-i];

       a[1001-i]:=buf;

   end;

   for i:=1 to 1000 do write(a[i], ' '); //Выводим перевернутый массив

   writeln(); //Переносим строку

   for i:=1 to 1000 do begin //Выводим нужные нам числа

       buf:=a[i];

       while buf>9 do buf:=buf div 10; //buf равно старшему разряду

       if buf>a[i] mod 10 then write(a[i], ' '); //Если старший разряд больше младшего, то выводим

   end;

end.

Часть, выделенная полужирным, эквивалентна

for i:=1000 downto 1 do read(a[i]); //Заполняем массив с конца и тем самым он сразу становится перевернутым.

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота