Дан массив a[1..n] и число b. переставить числа в массиве таким образом, чтобы слева от некоторой границы стояли числа, меньшие или равные b, а справа от границы - большие или равные b.
Program MashaLukianova; uses crt; const n=12; var mas:array[1..n] of integer; b,i,left,right,temp:integer; begin writeln('*** alphaues is thinking... ***'); writeln('*** OK ***'); writeln(); write('Введите загадочное число B '); readln(b); writeln('Элементы массива:'); {создание и вывод начального массива} randomize; for i:=1 to n do begin mas[i]:=random(100)-50; write (mas[i]:4); end; writeln(); left:=0; right:=n; while left <> right do {просматриваем массив с концов к середине, пока "левый" и "правый" текущие элементы не встретятся} begin if mas[left+1]<=b then
{если текущий "левый" элемент меньше или равно В, то просто идём смотреть следующий } begin left:=left+1; end else if mas[right]>=b then {если текущий "правый" элемент больше или равно В, то просто идём смотреть следующий }
begin right:=right-1; end else
{иначе меняем "левый" и "правый" местами} begin temp:= mas[left+1]; mas[left+1]:=mas[right]; mas[right]:=temp; left:=left+1; right:=right-1; end; end; writeln(); {вывод массива-результата} for i:=1 to n do begin write (mas[i]:4); end; writeln(); end.
Program MashaLukianova;
uses crt;
const n=12;
var
mas:array[1..n] of integer;
b,i,left,right,temp:integer;
begin
writeln('*** alphaues is thinking... ***');
writeln('*** OK ***');
writeln();
write('Введите загадочное число B ');
readln(b);
writeln('Элементы массива:');
{создание и вывод начального массива}
randomize;
for i:=1 to n do
begin
mas[i]:=random(100)-50;
write (mas[i]:4);
end;
writeln();
left:=0;
right:=n;
while left <> right do {просматриваем массив с концов к середине, пока "левый" и "правый" текущие элементы не встретятся}
begin
if mas[left+1]<=b then
{если текущий "левый" элемент меньше или равно В, то просто идём смотреть следующий }
begin
left:=left+1;
end
else
if mas[right]>=b then
{если текущий "правый" элемент больше или равно В, то просто идём смотреть следующий }
begin
right:=right-1;
end
else
{иначе меняем "левый" и "правый" местами}
begin
temp:= mas[left+1];
mas[left+1]:=mas[right];
mas[right]:=temp;
left:=left+1;
right:=right-1;
end;
end;
writeln();
{вывод массива-результата}
for i:=1 to n do
begin
write (mas[i]:4);
end;
writeln();
end.