Пишет "Ошибка времени выполнения: 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. Заранее спасибо.
В вашей программе есть несколько ошибок, которые приводят к выходу за границы массива и ошибке времени выполнения. Вот исправленный вариант программы:
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(151) - 70; // исправлен диапазон генерации чисел
end;
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[i] > x[max] then
max := i;
if x[i] < x[min] 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
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;
end.
Теперь программа должна работать корректно и выводить отсортированный массив без ошибок времени выполнения.