отсортировать элементы стоящие после первого максимального методом пузырька PASCAL ABC
Answers & Comments
baskovildar2018
Const n=10; var i,j,k,mx,ind: integer; a: array[1..n] of integer; begin writeln('исходный массив:'); randomize; mx:=0; for i:=1 to n do begin a[i]:=random(2*n)-n; write(a[i],' '); if a[i]>mx then begin mx:=a[i]; ind:=i; end; end; writeln; for i:=ind+1 to n-1 do for j:=i+1 to n do if a[i]>a[j] then begin k:=a[i]; a[i]:=a[j]; a[j]:=k; end; writeln('новый массив:'); for i:=1 to n do write(a[i],' '); end.
srzontmp
Это не идентификатор, это процедура swap(a,b) - обменивает значения переменных a b, a=b, b=a. Вместо нее можно записать так: k:=a[i]; a[i]:=a[j]; a[j]:=k; только нужно описать k в var k: integer;
srzontmp
Естественно, эти три оператора нужно поместить в блок begin end; , т.е. вместо строки if a[i]>a[j] then swap(a[i],a[j]); записываете следующее: if a[i]>a[j] then begin k:=a[i]; a[i]:=a[j]; a[j]:=k; end;
Answers & Comments
var i,j,k,mx,ind: integer;
a: array[1..n] of integer;
begin
writeln('исходный массив:');
randomize;
mx:=0;
for i:=1 to n do
begin
a[i]:=random(2*n)-n;
write(a[i],' ');
if a[i]>mx then
begin
mx:=a[i];
ind:=i;
end;
end;
writeln;
for i:=ind+1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
begin
k:=a[i];
a[i]:=a[j];
a[j]:=k;
end;
writeln('новый массив:');
for i:=1 to n do write(a[i],' ');
end.
исходный массив:
3 7 7 5 5 -2 -8 -9 -8 6
новый массив:
3 7 -9 -8 -8 -2 5 5 6 7
Verified answer
Элемент - k . Он нужен для того чтобы поменять два элемента массива местами.