1) tan(x*10 >0) - аргументом функции Tan(x) должно быть арифметическое, а не логическое выражение.
2) false V not(true) - 2 - нельзя смешивать в арифметическом выражении логические и числовые данные.
3) y=0 and trunc(1/x) mod 3 = 0 or false - В языке Паскаль приоритет операций /, mod, and одинаков и выше, чем приоритет операций =, or и поэтому выражение можно записать так же в виде
y = ((0 and trunc(1/x)) mod 3) = 0 or false, откуда хорошо видно, что 0 and trunc(1/x) некорректное логическое выражение.
Самая оптимальная стратегия угадывания - дихотомия, то есть деление отрезка пополам и задавание вопроса больше? (или меньше?)
Например, загадано 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 бит. Можно ещё сократить немного, так как в последующем вопросе используется информация из предыдущего(один из концов интервала).
Уточни, что имеется в виду под фразой "какое количество информации", иначе задача неопределена и допускает многочисленные толкования.
Поделитесь своими знаниями, ответьте на вопрос:
Дан массив из, состоящий из 9 вещественных чисел. все элементы массива с четными номерами заменить на их абсолютную величину
a:array [1..9] of real;
i:integer;
begin
for i:=1 to 9 do read(a[i]);
a[2]:=abs(a[2]);
a[4]:=abs(a[4]);
a[6]:=abs(a[6]);
a[8]:=abs(a[8]);
for i:=1 to 9 do write(a[i],' ');
end.