profile
Опубликовано 5 лет назад по предмету Информатика от Пашааф

Пишет "Ошибка времени выполнения: 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.

Заранее спасибо.

  1. Ответ
    Ответ дан petyaGavrikov
    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
    1. Ответ
      Ответ дан Пашааф
      Огромное спасибо!
    2. Ответ
      Ответ дан petyaGavrikov
      Полалуйста. Используйте кнопочку Спасибо )
    3. Ответ
      Ответ дан petyaGavrikov
      *Пожалуйста
Самые новые вопросы