Помощь - Поиск - Пользователи - Календарь
Полная версия: Cдвиги в массиве
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
keeply
Помогите плиз!
Задача:описать процедуру, дублирующую в целочисленном массиве А размера N элементы равные числу X. Вывести размер и содержимое полученного массива.

Например: 5 6 8 9 продублировать 6
рез-тат: 5 6 6 8 9
volvo
Цитата
Вывести размер и содержимое полученного массива.

keeply, можно поинтересоваться, что именно ПОЛУЧАЕТ процедура, и в каком виде? Какие параметры в нее передаются?
Altair
мне так нравиться:

{$apptype console}
program Untitled;
Type
Telem = integer;
ArrType=array[1..100] of Telem;

procedure duble_elem(var A:Arrtype; var N:Integer; X:Telem);
var

j,i:integer;

begin
i:=1;
while i<=n do begin
if a[i]=x then begin
inc(n);
for j:=n downto i+1 do a[j]:=a[j-1];
inc (i,2)
end else inc(i);
end
end;

var a:arrtype;
n,i:integer;
begin
{ ввод массива }
{...}
{тестовые присвоения}
{n:=6; a[1]:=1; a[2]:=2; a[3]:=3; a[4]:=2; a[5]:=6; a[6]:=7; }
{ввод x}
readln(x); {x:=2}
duble_elem(a,n,x);
{вывод результата}
writeln('size: ',n);
for i:=1 to n do write(a[i], ' ');
readln
end.

Процедура. Вход:
массивв А
размер N
число X
----------
в условии ничего не сказанно про то что вывод должен быть в процедуре.
volvo
Как вариант (если только не отрабатывается тема "циклы") :
while i<=n do begin
if a[i]=x then begin
inc(n);
move(a[i], a[i+1], (n - i)*sizeof(Telem)); { <-- Должно быть быстрее }
inc(i);
end;
inc(i);
end;
Guest
Volvo, Altair, :D спасибо огромное!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.