Сгенерировать случайное число.
Ввести счетчик попыток. Присвоить ему значение 1.
Пока счетчик попыток меньше, либо равен 10
запрашивать у пользователя очередное число,
если оно больше загаданного, то выводить "много",
если оно меньше загаданного, то выводить "мало",
иначе сообщать, что число угадано и прерывать выполнение цикла,
увеличивать счетчик попыток на единицу.
После цикла, если число не было угадано, то вывести сообщение о том, что попытки исчерпаны, и какое число было загадано компьютером.
Самый верный отгадать число менее чем за 10 попыток - это делить диапазон на 2. Например, если число лежит в пределах от 0 до 100, то введя 50 мы сразу сокращаем диапазон поиска в два раза. Если было сказано, что загаданное число меньше 50-ти, то вводим 25 и таким образом снова сокращаем диапазон в 2 раза.
Если следовать этому правилу то потребуется 6-7 попыток, т.к. число 100 (изначальная длина диапазона) лежит в пределах между 26 и 27.
begin
var R := SeqRandomReal(ReadInteger('n='), -50, 50)
.Select(t -> Round(t, 2)).ToArray;
R.Println;
var imin := R.IndexMin;
var Q := R.Select(t -> t * R[imin]).ToArray;
Q.Println; // если надо
R[imin] := Q.Average;
R.Println
end.
Примерn= 7
30.94 -31.83 41.85 -42.56 34.33 19.38 1.88
-1316.8064 1354.6848 -1781.136 1811.3536 -1461.0848 -824.8128 -80.0128
30.94 -31.83 41.85 -328.2592 34.33 19.38 1.88