Дан одномерный числовой массив, состоящий из 20 элементов. Создайте новый массив, состоящий из 10 элементов и заполните его произведениями пар элементов из первого массива, т.е B[1]=A[1]*A[2], B[2]=A[3]*A[4] и т.д. Сделайте сортировку полученного массива по убыванию.
Вот что написала, при заполнении массива b и дальнейшей его сортировки по убыванию выводятся одинаковые числа
const n=20; k=10;
var a: array [1..n] of integer;
b: array [1..k] of integer;
i,j,g,x: integer;
begin
for j:=1 to n do
begin
a[j]:=random(101);
end;
for i:=1 to k do
begin
for j:=1 to n-1 do
begin
b[i]:=a[j]*a[j+1];
end;
end;
for i:=1 to k-1 do
for g:=i+1 to k-i do
if b[i] begin
x:=b[i];
b[i]:=b[g+1];
b[g+1]:=x;
end;
for i := 1 to k do
writeln(b[i]:2);
end.


restIess: if b[i], если b[i] что, знак там или что-то еще
yaliana63: b[i]
yaliana63: b[i] < b[g]
restIess: как я не люблю в непонятном коде капаться)
yaliana63: Оу, все. Тема закрыта. До меня наконец дошло, что надо делать
restIess: Там маленький косяк был в if'е

Ответы

Ответ дал: restIess
1

const n=20; k=10;

var  

a: array [1..n] of integer;

b: array [1..k] of integer;

i,j,g,x: integer;

begin

randomize;

for i:=1 to n do

a[i]:=random(101);

for i:=1 to k do

begin

for j:=1 to n-1 do

b[i]:=a[j]*a[j+1];

end;

for i:=1 to k do

for g:=1 to k-1 do

if b[i] < b[i+1] then begin

x:=b[i];

b[i]:=b[g+1];

b[g+1]:=x;

end;

for i:=1 to n do

writeln(b[i]);

end.

Вас заинтересует