Иногда выводит ошибку: Ошибка времени выполнения, индекс находится вне границ массива. PascalABC.NET вот само задание: Дан массив А(n). Поменять местами максимальный и минимальный элементы
исходный код: var max,min,n,i,go,ga: integer; var a : array [1..100] of integer; begin write('Введите размерность массива: '); readln(i); for n:=1 to i do begin a[n] := random (101); writeln('a[',n,']= ',a[n]); end; max := a[1]; min := a[1]; for n:=1 to i do begin if a[n] > max then begin max := a[n]; go := n; end; if a[n] < min then begin min := a[n]; ga := n; end; end; writeln; writeln('max = ', max); writeln('min = ', min); writeln; writeln('Меняем местами ',go,' и ',ga,' элементы массива'); writeln; a[go] := a[go] + a[ga]; //меняем местами максимальный и минимальный элементы массива a[ga] := a[go] - a[ga]; a[go] := a[go] - a[ga]; for n:=1 to i do begin writeln('a[',n,']= ',a[n]); end; end.
Исключение IndexOutOfRangeException ("Индекс находился вне границ массива") указывает на то, что в каком либо месте программы вы пытаетесь обратится к массиву с индексом, выходящим за его границы.
Вероятнее всего, конкретно в вашем коде ошибка может быть на строке 4, т.к вы объявляете имя a как массив на 100 элементов с допустимыми индексами от 1 до 100, но позже даёте пользователю право самому ввести требуемую размерность, и никак не проверяете вводимое пользователем значение. В таком случае любое число > 100 будет приводить к исключению IndexOutOfRangeException.
Что бы избежать исключительных ситуаций, вы можете пойти двумя путями:
1. Проверять вводимые данные на соответствие диапазону допустимых индексов для массива а
2. Использовать коллекции с динамической размерностью (Array of T или List<T>)
Исключение IndexOutOfRangeException ("Индекс находился вне границ массива") указывает на то, что в каком либо месте программы вы пытаетесь обратится к массиву с индексом, выходящим за его границы.
Вероятнее всего, конкретно в вашем коде ошибка может быть на строке 4, т.к вы объявляете имя a как массив на 100 элементов с допустимыми индексами от 1 до 100, но позже даёте пользователю право самому ввести требуемую размерность, и никак не проверяете вводимое пользователем значение. В таком случае любое число > 100 будет приводить к исключению IndexOutOfRangeException.
Что бы избежать исключительных ситуаций, вы можете пойти двумя путями:
1. Проверять вводимые данные на соответствие диапазону допустимых индексов для массива а
2. Использовать коллекции с динамической размерностью (Array of T или List<T>)