Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2020, 16:33   #1
Alikcool
Новичок
Джуниор
 
Регистрация: 21.01.2020
Сообщений: 6
Сообщение Ошибка времени выполнения: Индекс находился вне границ массива

Данный код срабатывает через раз и выдаёт ошибку " Ошибка времени выполнения: Индекс находился вне границ массива."
а также : Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла

Код:
const n = 10;
var a: array[1..10] of integer;
begin
 write('Исходный массив: '); 
 for var i := 1 to n do begin
  a[i] := random(-9,9);
  write('a[', i, ']=', a[i], ' ');
 end;
 writeln;
 var i := 1; var x := n;
 while i <= n do
  if a[i] < 0 then begin
   x -= 1;
   for var ii := i to x do
    a[ii] := a[ii + 1];
  end else i += 1;
 write('Конечный массив: ');
 for i := 1 to x do write(a[i], ' ');
end.

Последний раз редактировалось Alikcool; 23.01.2020 в 16:40.
Alikcool вне форума Ответить с цитированием
Старый 23.01.2020, 20:20   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Не знаю, как там в ABC, но вообще-то переменные следовало бы описывать в соответствующей секции, чтоб не дурить бошку компилятору и себе. И форматировать текст хорошо бы так, чтоб читать его можно было без мата.
Код:
const n = 10;
var a: array[1..10] of integer;
var i,ii,x: integer ;
begin
 write('Исходный массив: '); 
 for  i := 1 to n do
   begin
     a[i] := random(-9,9);
     write('a[', i, ']=', a[i], ' ');
   end;
 writeln;
 i := 1;  x := n;
 while i <= n do
  if a[i] < 0 then
    begin
      x -= 1;
      for ii := i to x do  a[ii] := a[ii + 1];
    end
  else i += 1;
 write('Конечный массив: ');
 for i := 1 to x do write(a[i], ' ');
end.
-= - это в АВС такие Сишные выверты запупырены ?

Последний раз редактировалось digitalis; 24.01.2020 в 11:29.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
индекс находился вне границ массива Vantus Паскаль, Turbo Pascal, PascalABC.NET 2 02.05.2017 19:21
ошибка индекс находился вне границ массива stopping Помощь студентам 1 03.11.2016 19:33
Ошибка времени выполнения: Индекс находился вне границ массива (pascal) dijetol Помощь студентам 2 10.04.2014 16:16
Ошибка: Индекс находился вне границ массива archi-boy C# (си шарп) 11 15.11.2013 12:45
[C#] Индекс находился вне границ массива JonMagon Помощь студентам 12 22.01.2012 23:06