Ошибка "встречено 'for' а ожидался идентификатор" чаще всего указывает на синтаксическую ошибку в коде, которая мешает компилятору корректно интерпретировать ваш код. Рассмотрим ваш пример подробно и разберем возможные причины ошибки.
Ваш код:
Var
mas: array[1.15] of integer;
I, sum: integer;
begin
sum := 0;
For I := 1 to 15 do mas[i] := random(101); // ЭТА СТРОКА КРАСНЫМ ВЫДЕЛЕНА
For I := 1 to 15 do write(mas[i]:3);
For I := 1 to 15 do
if (mas[i] > mas[i+1]) and (mas[i] > mas[i-1]) and (mas[i+1] + mas[i-1] > sum) then
sum := mas[i+1] + mas[i-1];
writeln(sum);
end.
На что следует обратить внимание:
Определение массива:
mas: array[1.15] of integer;
Здесь у вас ошибка в диапазоне индексов массива. Должно быть 1.15
, а не 1.15
.
Инициализация массива:
For I := 1 to 15 do mas[i] := random(101);
Эта строка выделена красным, вероятно, из-за ошибки в определении массива. Если исправить массив, ошибка должна исчезнуть.
Границы массива в циклах:
В последнем цикле есть обращение к элементам mas[i+1]
и mas[i-1]
. Это может вызвать выход за границы массива, когда i
равно 1 или 15. Нужно добавить проверки:
For I := 2 to 14 do
if (mas[i] > mas[i+1]) and (mas[i] > mas[i-1]) and (mas[i+1] + mas[i-1] > sum) then
sum := mas[i+1] + mas[i-1];
Теперь исправленный код:
Var
mas: array[1.15] of integer;
I, sum: integer;
begin
sum := 0;
For I := 1 to 15 do mas[i] := random(101);
For I := 1 to 15 do write(mas[i]:3);
For I := 2 to 14 do
if (mas[i] > mas[i+1]) and (mas[i] > mas[i-1]) and (mas[i+1] + mas[i-1] > sum) then
sum := mas[i+1] + mas[i-1];
writeln(sum);
end.
В этом исправленном коде:
- Исправлено определение массива.
- В последнем цикле изменены границы, чтобы избежать выхода за пределы массива.
Теперь код должен компилироваться и работать корректно.