В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
XTreams
XTreams
03.01.2021 00:10 •  Информатика

Надо написать ошибку для программы в delphi ,когда вместо цифры вводишь букву ,и программа пишет *введите цифру

Показать ответ
Ответ:
iprin
iprin
19.07.2020 05:00

Самая оптимальная стратегия угадывания - дихотомия, то есть деление отрезка пополам и задавание вопроса больше? (или меньше?)

Например, загадано 50

Последовательность

32   64/2            больше

48   (32+64)/2   больше

56   (48+64)/2   меньше

52   (48+56)/2   меньше

50   (48+52)/2   попал

 

Теперь о задаче. Вопрос очень некорректный, если бы он звучал, как сколько попыток нужно сделать, чтобы угадать? , то решение простое

64 = 2^6, поэтому нужно 6 попыток 6 = 110b, значит 3 бит достаточно, чтобы в них разместить это количество попыток.

НО в задаче вопрос-то другой! Потому что в процессе отгадывания на каждом шаге нужно знать 1. Концы отрезка, 2. ответ

Концы это 6 бит и 6 бит +ответ 1 бит, итого 13 бит на шаг *6 = 78 бит. Можно ещё сократить немного, так как в последующем вопросе используется информация из предыдущего(один из концов интервала).

Уточни, что имеется в виду под фразой "какое количество информации", иначе задача неопределена и допускает многочисленные толкования.

0,0(0 оценок)
Ответ:
Артур13487в158168
Артур13487в158168
31.03.2023 07:21
//"Школьный" вариант
//Pascal ABC.NET 3.1 сборка 1256

Const
 n=10;

 Var
 ar:array[1..n] of integer;
 i,max,min:integer;
b:boolean;
begin
randomize;
b:=false;
max:=integer.MinValue;
min:=integer.MaxValue;
writeln('Array:');
for i:=1 to n do
 begin
  ar[i]:=random(-100,100);
  if (ar[i]>max) and not(odd(ar[i])) and (ar[i]>0) then
  begin
   max:=ar[i];
   b:=true;
  end;
  if (ar[i]<min) and not(odd(ar[i])) and (ar[i]>0) then
  begin
   min:=ar[i];
   b:=true;
  end;
  write(ar[i]:4);
 end;
writeln;
if b=false then writeln('Нет удовлетворяющих условиям чисел') else
 begin
  writeln('Max=',max);
  writeln('Min=',min);
 end;
end.

Пример работы программы:
Array:
  98  60 -41 -88  63 -81 -77 -96 -18  51
Max=98
Min=60
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота