Непонятный 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;
Объяснение кода листинга программы
- Объявлены две переменные cntComp и cntSwap типа Longint.
- Следующая функция Swap принимает два аргумента типа TElement и меняет их местами.
- Временная переменная c объявлена внутри функции Swap.
- В функции IsLess сравниваются два аргумента типа TElement и возвращается логическое значение.
- Обе функции (Swap и IsLess) используют глобальные переменные cntComp и cntSwap для увеличения их значений на единицу.
- Предполагается, что эти функции используются для сортировки массива, возможно, с использованием алгоритма сортировки пузырьком.
- Ошибка runtime error 201 может возникать из-за некорректного использования памяти или утечки памяти, возможно, из-за некорректного освобождения памяти, выделенной для локальной переменной c в функции Swap.
- Ошибка может быть вызвана также из-за некорректного входного массива или некорректного размера массива.
- Возможно, что код не был правильно откомпилирован или были допущены ошибки при написании кода.
- Для более точной диагностики ошибки необходимо знать больше информации о входных данных и о том, как используется код.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д