Доброго всем времени суток.
Помогите пожалуйста решить 2 задачи на массивы. (Turbo Pascal)
1. Дан массив D(n), n - кратно 3. Поменять местами 1 и 3 элементы, 4 и 6, 7 и 9 и т.д.
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
2. Добавить по элементу после каждого второго элемента.
Спасибо...
по первой:
for i:=1 to n do
begin
t:=a[i];
a[i]:=a[i+2];
a[i+2]:=t;
end;
for i:=1 to n do
begin
t:=a[i];
a[i]:=a[i+2];
a[i+2]:=t;
end;
тьфу, точно.. извиняюсь.. сейчас переделаю)
добавлено:
i:=1;
while i<=n-2 do
begin
t:=a[i];
a[i]:=a[i+2];
a[i+2]:=t;
inc(i,3);
end;
i:=1;
while i<=n-2 do
begin
t:=a[i];
a[i]:=a[i+2];
a[i+2]:=t;
inc(i,3);
end;
ох и ленивые студенты пошли
program mas;
const n=21;
var
a:array[1..n] of integer;
i,t:integer;
begin
writeln('Первоначальный массив: ');
for i:=1 to n do
begin
a[i]:=i;
write(a[i]:3);
end;
writeln;
i:=1;
while i<=n-2 do
begin
t:=a[i];
a[i]:=a[i+2];
a[i+2]:=t;
inc(i,3);
end;
writeln('Измененный массив: ');
for i:=1 to n do
write(a[i]:3);
readln;
end.
Хочу выразить огромную благодарность! Айре, Самцу за то что уделили немного времени, внимания, и терпения...)))
Вторую задачку попробую сам как ни будь.
Спасибо еще раз!!!
P.S. про студентов вы правы)))))
со второй задачкой у меня вот что получилось:
program mas;
const n=14;
var
a:array[1..n] of integer;
i,t,j,k:integer;
begin
{заполняем первоначальный массив}
writeln('Первоначальный массив: ');
for i:=1 to n div 2 do
begin
a[i]:=i;
write(a[i]:3);
end;
writeln;
{выполняем условие задачи}
{инициализация счетчиков}
i:=0; {очередной элемент массива}
t:=(n div 2); {всего элементов в массиве}
j:=0; {отвечает за каждый второй}
while i <= t do
begin
inc(j); {увеличиваем счетчики}
inc(i);
if(j=3) then {если два элемента миновали, то...}
begin
inc(t); {увеличиваем общее кол-во элементов}
for k:=t downto i+1 do {сдвигаем элементы массива}
a[k]:=a[k-1];
a[i]:=0; {вставляем новый эл-т}
j:=0;
end;
end;
writeln('Полученный массив');
for i:=1 to t do
write(a[i]:3);
readln;
end.
Спасибо всем огроиное!!!!! отдельное спасибо за вторую задачу Самцу!
for i := 0 to (n div 3) - 1 do begin
t := a[3*i + 1];
a[3*i + 1] := a[3*i+3];
a[3*i + 3] := t;
end;