Непонятный runtime error 201 при сортировке массива - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Задание: 1. Разработать процедуры сортировки массива целых чисел методом прямого выбора, методом пузырьковой сортировки и методом шейкерной сортировки (язык программирования Паскаль или Си). 2. Правильность сортировки проверить путем подсчета контрольной суммы и числа серий в массиве. 3. Во время сортировки предусмотреть подсчет количества пересылок и сравнений (М и С), сравнить их с теоретическими оценками. 4. Составить таблицу следующего вида (данные получить экспериментально) для n= 100, 200, 300, 400, 500. (n – количество элементов в массиве) Я для каждого размера заполняю массив по возрастанию, по убыванию и случайным образом, и замеряю количество пересылок и сравнений для каждого случая. Пока что только метод Прямого выбора проверяю. При n = 100 все ок. При n = 200 с массивом по возрастанию все ок, по убыванию все ок, а на случайно заполненном массиве вылетает runtime error 201 при попытке обращения к любому элементу (поставила вывод a[0] перед началом, и вывод текущего i на каждой итерации чтобы знать когда оно вылетает, ну и вылетает соответственно при попытке обращения к a[0] перед началом сортировки). Не понимаю в чем вообще может быть дело. Помогите пожалуйста.

Решение задачи: «Непонятный runtime error 201 при сортировке массива»

textual
Листинг программы
type
  TElement=Integer;
 
var
  cntComp, cntSwap: Longint;
 
procedure Swap(var a, b: TElement);
var c: TElement;
begin
  c:=a; a:=b; b:=c;
  Inc(cntSwap);
end;
 
function IsLess(a, b: TElement): Boolean;
begin
  IsLess:=a<b;
  Inc(cntComp);
end;

Объяснение кода листинга программы

  1. Объявлены две переменные cntComp и cntSwap типа Longint.
  2. Следующая функция Swap принимает два аргумента типа TElement и меняет их местами.
  3. Временная переменная c объявлена внутри функции Swap.
  4. В функции IsLess сравниваются два аргумента типа TElement и возвращается логическое значение.
  5. Обе функции (Swap и IsLess) используют глобальные переменные cntComp и cntSwap для увеличения их значений на единицу.
  6. Предполагается, что эти функции используются для сортировки массива, возможно, с использованием алгоритма сортировки пузырьком.
  7. Ошибка runtime error 201 может возникать из-за некорректного использования памяти или утечки памяти, возможно, из-за некорректного освобождения памяти, выделенной для локальной переменной c в функции Swap.
  8. Ошибка может быть вызвана также из-за некорректного входного массива или некорректного размера массива.
  9. Возможно, что код не был правильно откомпилирован или были допущены ошибки при написании кода.
  10. Для более точной диагностики ошибки необходимо знать больше информации о входных данных и о том, как используется код.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.8 из 5
Похожие ответы