Другие языки программирования и технологии

Разработка в среде TURBO PASCA программы перестановки элементов массива.

помогите пожалуйста :
Дан одномерный массив
В первой строке переставить местами цепочки элементов массива, расположенные до первого четного и после последнего четного элементов массива.
var i, n, k, c1, c2: integer;
a, b: array [1..100] of integer;
begin
randomize;
write ('n=');
readln (n);
for i:=1 to n do
begin
b[i]:=0;
if i <=2 then a[i]:=10+(random(45)*2-1) else
if i >=n-2 then a[i]:=10+(random(45)*2-1) else
a[i]:=10+random(90);
write (a[i]:4);
end;
writeln; for i:=1 to n do write (i:4); {строку можно удалить}
writeln;
writeln;
for i:=1 to n do
if not odd(a[i]) then c1:=i;
for i:=n downto 1 do
if not odd(a[i]) then c2:=i;
writeln ('расположение первого и последнего четных элементов массива ', c2,' и ', c1);
writeln;
k:=0;
for i:=c1+1 to n do
begin
inc(k);
b[k]:=a[i];
end;
for i:=c2 to c1 do
begin
inc(k);
b[k]:=a[i];
end;
for i:=1 to c2-1 do
begin
inc(k);
b[k]:=a[i];
end;
for i:=1 to n do write (b[i]:4);
writeln;
end.
Артём Охапкин
Артём Охапкин
24 309
Лучший ответ
в одномерно массиве только одна первая строка, приведи пример по твоей задаче
Александр Мигунов привел пример
program MassMove;

const mLen = 30; {длина массива}
const Mass : array[1..mLen] of integer = (3, 7, 19, 15, 9, 14, 7, 9, 11, 5,
3, 4, 9, 7, 12, 8, 15, 13, 18, 13,
9, 3, 5, 3, 8, 3, 9, 13, 19, 11);
var
cFirst, cLast : integer;
i : integer;
begin
i:= 1;
while (i <=mLen) do
begin
if (Mass[i] mod 2) = 0 then {ищем первый чётный элемент, попутно выводим элементы массива}
begin
cFirst := i;
cLast := i;
write( Mass[i], ' ');
break;
end;
write( Mass[i], ' ');
inc(i);
end;
while i < mLen do {ищем последний чётный элемент}
begin
inc( i );
write( Mass[i], ' '); {продолжаем выводить массив}
if (Mass[i] mod 2) = 0 then cLast := i;
end;

writeln;
writeln ('номера элементов: ', cFirst, ' ', cLast);

i:=1;
while i + cLast <= mLen do
begin {выводим часть массива после последнего элемента (сделано так хитро, чтобы вместо write можно было поставить присвоение i-тому элементу нового массива}
write(Mass [i + cLast], ' ');
inc(i)
end;
while i < mLen - cFirst + 2 do {выводим часть массива от первого до последнего чётного элемента}
begin
write(Mass[ i - (mLen - cLast) + cFirst - 1], ' ');
inc(i);
end;
while i <= mLen do {выводим часть массива до первого чётного элемента}
begin
write(Mass[i - (mLen - cFirst) - 1], ' ');
inc(i);
end;
end.
Досбол Аканов
Досбол Аканов
7 710

Похожие вопросы