Ошибка "встречено 'for' а ожидался идентификатор" Var mas: array[1.15] of integer; I,sum:integer; sum:=0;...

Тематика Информатика
Уровень 10 - 11 классы
Pascal ошибка компиляции синтаксическая ошибка массив цикл for переменные инициализация отладка программирование исправление ошибок
0

Ошибка "встречено 'for' а ожидался идентификатор" Var mas: array[1.15] of integer; I,sum:integer; 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.

avatar
задан 2 месяца назад

3 Ответа

0

Ошибка "встречено 'for' а ожидался идентификатор" возникает из-за того, что в языке программирования Pascal ключевое слово "for" используется для создания цикла, который выполняется определенное количество раз. Однако в данном случае после ключевого слова "For" должно следовать объявление переменной цикла, а не оператор присваивания.

Исправленный код будет выглядеть следующим образом:

Var 
 mas: array[1.15] of integer;
 I,sum:integer;
 sum:=0;
begin
 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.

В данном исправленном коде ошибки нет. Он заполняет массив случайными числами, выводит их на экран, а затем находит сумму двух соседних элементов, которые больше своих соседей, и выводит эту сумму.

avatar
ответил 2 месяца назад
0

Ошибка "встречено '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.

На что следует обратить внимание:

  1. Определение массива:

    mas: array[1.15] of integer;
    

    Здесь у вас ошибка в диапазоне индексов массива. Должно быть 1.15, а не 1.15.

  2. Инициализация массива:

    For I := 1 to 15 do mas[i] := random(101);
    

    Эта строка выделена красным, вероятно, из-за ошибки в определении массива. Если исправить массив, ошибка должна исчезнуть.

  3. Границы массива в циклах: В последнем цикле есть обращение к элементам 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.

В этом исправленном коде:

  1. Исправлено определение массива.
  2. В последнем цикле изменены границы, чтобы избежать выхода за пределы массива.

Теперь код должен компилироваться и работать корректно.

avatar
ответил 2 месяца назад
0

Ошибка возникает из-за того, что в строке "For I:= 1 to 15 do mas[i]:=random(101);" вместо "For" должно быть написано "for".

avatar
ответил 2 месяца назад

Ваш ответ

Вопросы по теме