Помощь - Поиск - Пользователи - Календарь
Полная версия: вставка элементов одномерных массивов
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
tryno
Нужно Вставить число T
перед всеми элементами меньшими числа P
(вставка и удаление элементов одномерных массивов)

Program s;
Const n=7;
Type myarray = Array[1.. 2*n] Of Integer;
Var A : myarray;
x, k, i, p, t, y :Integer;
Procedure Init(Var m: myarray);
begin
writeln(' ','Vveden massiv: ');
for i:=1 to n do begin
m[i]:=random(20);
end;
end;
Procedure Print(n1: Integer; m: myarray);
begin
write(' ');
for i:=1 to n1 do
write(' ',m[i]);
end;

Procedure Insert2(k1, x1: Integer; Var m: myarray);
Var i : Integer;
begin{сдвиг элементов на одну позицию назад, - это номер последнего эл. в дан. мом.}
For i:= n+k Downto k1-1 Do
m[i+1]:= m[i];{ вставка эл. на место перед k1-м}
m[k1-1]:=x1;{увеличение счетчика вставляемых элементов}
Inc(k);
end;


Begin
Init(A);Print(n,A);
Write(' ','Vvedite vstavlyaemoe chislo T:');Readln(y);
Write(' ','Vvedite chislo dlya sravnenya P:');Readln(P);
k:=0;
For i:= n Downto 1 Do If A[i]<P Then Insert2(i,y,A);
Print(n+k,A);
Readln;
End.
Как доделать программу чтоб работала ?
М
Используй теги и НЕ используй цвет в программе. Lapp

мисс_граффити
у меня вот такое получилось:
program vstavka;
uses crt;
const n=5;
var ar:array[1..2*n] of integer;
i,j,t,p,razm:integer;
begin
clrscr;
{заполнение с выводом на экран}
for i:=1 to n do
begin
ar[i]:=random(10);
write(ar[i]:3);
end;

p:=10; {здесь сделаешь ввод, а не присваивание... если хочешь}
t:=9;

razm:=n;
i:=1;
while i<=razm do
begin
if ar[i]<p then

{сдвиг и вставка}
begin
for j:=razm downto i do
ar[j+1]:=ar[j];
ar[i]:=t;
inc(i);
inc(razm);
end;

inc(i);
end;
writeln;
{вывод результата}
for i:=1 to razm do
write(ar[i]:3);
readln;
end.

подпрограммы специально не стала выделять... думаю, сама это сделаешь без труда.
tryno
спасибо большое - все работает!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.