Вопрос задан 29.07.2023 в 07:04. Предмет Информатика. Спрашивает Ямлихина Аделя.

Пишет "Ошибка времени выполнения: System.IndexOutOfRangeException: Индекс находился вне границ

массива." и не выводит отсортированный массив. Что делать? //Ввести кол-во эл-тов n одномерного массива целого типа и сгенерировать массив в диапазоне [-70,80]. Требуется: //1 Вывести сгенерированный массив в отдельной строке, найти max и min эл-ты и поменять их местами //2 Отсортировать полученный массив по убыванию и вывести в 3-ей строке program dz1; var x:array[1..100]of integer; i,max,min,n,t,buf,k:integer; begin write('Введите кол-во эл-тов n:');readln(n); for i:=1 to n do begin x[i]:=random(106)-35; end; writeln('вывод сген. массива'); for i:=1 to n do write (x[i],' '); writeln; writeln; //1 writeln('Поиск max: '); max:=x[1]; for i:=2 to n do if (maxx[i])then begin min:=x[i]; end; writeln('min=',min); writeln('max=',max); t:=x[max]; x[max]:=x[min]; x[min]:=t; //2 for i:=1 to n-1 do begin for k:=1 to n-1 do begin if x[k] < x[k+1] then begin buf:=x[k]; x[k]:=x[k+1]; x[k+1]:=buf; end; end; end; writeln; writeln('Массив отсортирован'); for k:=1 to n do write(x[k],' '); readln; for k:=1 to n-1 do read(x[n]); readln(x[n]); end. Заранее спасибо.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Лолев Дмитрий.
Program dz1;
var
x:array[1..100]of integer;
i,max,min,n,t,buf,k:integer;
begin

write('Введите кол-во эл-тов n:');readln(n);

for i:=1 to n do x[i]:=random(151)-70;
writeln('вывод сген. массива');
for i:=1 to n do write (x[i],' ');
writeln;
writeln;

//1
writeln('Поиск max и min: ');
max:=1; min:=1;
for i:=2 to n do
begin
if (x[max]<x[i])then max:=i;
if (x[min]>x[i])then min:=i;
end;
writeln('min=',x[min]);
writeln('max=',x[max]);
t:=x[max];
x[max]:=x[min];
x[min]:=t;

//2
for i:=1 to n-1 do
 for k:=1 to n-i do
  if x[k] < x[k+1] then 
begin
 buf:=x[k];
 x[k]:=x[k+1];
 x[k+1]:=buf;
end;
writeln;
writeln('Массив отсортирован');

for i:=1 to n do write(x[i],' ');
writeln;
end.

Пример:
Введите кол-во эл-тов n:15
вывод сген. массива
32 -38 -35 53 -50 31 66 16 5 28 64 -11 20 -43 -1

Поиск max и min:
min=-50
max=66

Массив отсортирован
66 64 53 32 31 28 20 16 5 -1 -11 -35 -38 -43 -50
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Из предоставленного кода можно выделить несколько проблем, которые приводят к ошибке времени выполнения и некорректной сортировке массива. Вот перечень проблем и способы их исправления:

  1. Проблема с поиском максимального и минимального элементов: Ошибка в строке if (maxx[i])then begin - здесь опечатка. Нужно заменить maxx на max. Аналогично, в строке min:=x[i]; заменить на min:=x[i];.

Исправленный код для поиска максимального и минимального элементов:

pascal
max := x[1]; min := x[1]; for i := 2 to n do begin if x[i] > max then max := x[i]; if x[i] < min then min := x[i]; end;
  1. Проблема с сортировкой массива: Для сортировки массива по убыванию используется метод "пузырьковой" сортировки. Однако, в текущей реализации циклы для сортировки некорректно ограничены.

Исправленный код для сортировки массива:

pascal
for i := 1 to n - 1 do begin for k := 1 to n - i do // Изменили условие для правильной сортировки begin if x[k] < x[k + 1] then begin buf := x[k]; x[k] := x[k + 1]; x[k + 1] := buf; end; end; end;
  1. Проблема с чтением данных в массив: В самом конце кода есть лишний фрагмент, где снова выполняется чтение элементов массива x. Это не нужно, так как значения уже сгенерированы и отсортированы ранее.

Уберите следующий фрагмент:

pascal
for k := 1 to n - 1 do read(x[n]); readln(x[n]);

После внесения указанных исправлений, ваш код должен работать правильно и выводить отсортированный массив.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос