Лучшие помощники
- Megamozg 2205 б
- Matalya1 1800 б
- DevAdmin 1720 б
- arkasha_bortnikov 900 б
- Dwayne_Johnson 870 б
2 апреля 2023 17:57
1037
Иногда выводит ошибку: Ошибка времени выполнения, индекс находится вне границ массива. 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.

1
ответ
Ответ:
Исключение 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>)
0
·
Хороший ответ
4 апреля 2023 17:57
Остались вопросы?
Еще вопросы по категории Информатика
1. умножь на 3 2. вычти 5 Первая из них увеличивает число на экране в 3 раза, вторая уменьшает его на 5. Составьте алгоритм получения из числа...
Укажите число, записанное в естественной форме 1) Среди предложенных вариантов нет числа в естественной форме 2)1,784824E+5 3) 95400611 x 102 4)...
Алфавит содержит восемь букв: А, Б, В, Г, Д, Е, Ж, З. Устройство заменяет каждую букву последовательностью из трех двоичных символов так, что одинаков...
Чему будет равна длина строковой переменной "s" после выполнения программы: a="КУ-КУ"*2 b="КУКА"+"РЕКУ" s=a+b...
Для какого из приведенных значений числа X истинно высказывание: НЕ(X < 6) И (X < 7)? Ответы: 1) 5 2)6 3)7 4)8...