Произвести сортировку методом прямого выбора первого полученного массива по убыванию - Pascal
Формулировка задачи:
Заполнить массив из 20 элементов случайными числами от -10 до 5. Сформировать два массива, состоящие из первых 10 и последних 10 элементов исходного массива. Произвести сортировку методом прямого выбора первого полученного массива по убыванию, второго - по возрастанию.
Так же есть код, но нужно обозначить за что отвечает каждая строчка в сортировках первого и второго массива.
и расскажите пжлста в строах 38 и 54 почему мы пишем i+1 to 10 do
Листинг программы
- program l16v2;
- var
- a:array[1..20] of integer;
- b,c:array[1..10] of integer;
- i,j,k,t,i_2:integer;
- begin
- randomize;
- writeln('ishodniy massiv');
- for i:=1 to 20 do
- begin
- a[i]:=random(16)-10;
- write (a[i],' ');
- end;
- writeln();
- writeln('1 massiv');
- for i:=1 to 10 do
- begin
- b[i]:=a[i];
- write(b[i],' ');
- end;
- writeln;
- writeln('2 massiv');
- for i:=1 to 10 do
- begin
- c[i]:=a[i+10];
- write(c[i],' ');
- end;
- writeln();
- writeln('sortirovka 1 massiva');
- for i:=1 to 9 do
- begin
- for k:=1 to 10 do
- write(b[k],' ');
- writeln();
- i_2:=i;
- for j:=i+1 to 10 do
- if b[i_2] < b[j] then
- i_2:=j;
- t:=b[i];
- b[i]:=b[i_2];
- b[i_2]:=t;
- end;
- writeln();
- writeln('sortirovka 2 massiva');
- for i:=1 to 9 do
- begin
- for k:=1 to 10 do
- write (c[k],' ');
- writeln();
- i_2:=i;
- for j:=i+1 to 10 do
- if c[i_2] > c[j] then
- i_2:=j;
- t:=c[i];
- c[i]:=c[i_2];
- c[i_2]:=t;
- end;
- writeln();
- end.
Решение задачи: «Произвести сортировку методом прямого выбора первого полученного массива по убыванию»
textual
Листинг программы
- var
- a: array [1..20] of Integer;
- b, c: array [1..10] of Integer;
- i, j, k, t: Integer;
- begin
- Randomize;
- for j:=Low(a) to High(a) do a[j]:=-10+Random(16); {инициализация a}
- for j:=Low(b) to High(b) do begin
- b[j]:=a[j]; c[j]:=a[j+10]; {заполнение b и c}
- end;
- Write('A ='); for j:=Low(a) to High(a) do Write(' ',a[j]); WriteLn; {вывод}
- Write('B ='); for j:=Low(b) to High(b) do Write(' ',b[j]); WriteLn; {вывод}
- for i:=Low(b) to High(b)-1 do begin
- k:=i; for j:=i+1 to High(b) do if b[j]<b[k] then k:=j; {индекс мин. в k}
- t:=b[i]; b[i]:=b[k]; b[k]:=t; {обмен}
- Write('':3); for j:=Low(b) to High(b) do Write(' ',b[j]); WriteLn; {вывод}
- end;
- Write('C ='); for j:=Low(c) to High(c) do Write(' ',c[j]); WriteLn; {вывод}
- for i:=Low(c) to High(c)-1 do begin
- k:=i; for j:=i+1 to High(c) do if c[j]>c[k] then k:=j; {индекс макс. в k}
- t:=c[i]; c[i]:=c[k]; c[k]:=t; {обмен}
- Write('':3); for j:=Low(c) to High(c) do Write(' ',c[j]); WriteLn; {вывод}
- end;
- end.
Объяснение кода листинга программы
- Объявляется массив
a
размером 20 элементов, массивыb
иc
размером 10 элементов и переменныеi
,j
,k
,t
типа Integer. - Генерируются случайные значения от -10 до 5 для каждого элемента массива
a
. - Значения элементов массива
b
заполняются значениями из первой половины массиваa
, значения элементов массиваc
заполняются значениями из второй половины массиваa
. - Выводится на экран содержимое массива
a
и массиваb
. - Происходит сортировка массива
b
методом прямого выбора по возрастанию. - После каждой итерации сортировки выводится на экран текущее состояние массива
b
. - Выводится на экран содержимое массива
c
. - Происходит сортировка массива
c
методом прямого выбора по убыванию. - После каждой итерации сортировки выводится на экран текущее состояние массива
c
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д