Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Слияние в массиве

Автор: Ars 11.03.2005 11:41

Искал по поиску но не нашел.
Как слиять два массива?
У меня такая задача:
Даны 2 массива, путем слияния получить массив 3, удаляемые эл. собрать в 4 массиве.
Я не пойму, какие удаляемые элементы? или как их удалять (задача не полностью)

Автор: Altair 11.03.2005 21:41

ну так, задача не полностью дана, решить ее нельзя.

А что не понятного в слиянии массивов?

Автор: Ars 11.03.2005 23:25

Задачу я не стал писать полностью, потому, что подумал, что здесь только теор. вопросы. А насчет слияния массивов - я не знаю как их слиять sad.gif.

Автор: Altair 11.03.2005 23:46

Код

const
nn=100;
type
Atype = array[1..nn] of integer;
var
a,b,c:atype;
na,nb,nc:integer;
i,j:integer;
begin
{...}
j:=1;
For i:=1 to  na do begin c[j]:=a[i]; inc(j); end;
For i:=1 to nb do begin c[j]:=b[i];inc(j) end;
nc:=nc+nb;
{...}
end.

так можно выполнять слияние массива A и B в масив C

Автор: Ars 12.03.2005 0:24

Спасибо!

Автор: Ars 12.03.2005 0:30

За слияние массивов огромное спасибо, а как удалять элементы?

Автор: Altair 12.03.2005 1:35

удалять улементы можно по номеру или по совпадению (1 случай - удалить 3 элемент, второй случай -удлить элемент значением 123 например).
Рассмотрим только первый случай. т.к. второй это частный случай первого.

Код
const
nn=100;
Var
a:array[1..nn] of integer;
i,s:integer;
n:integer;
begin
{n хранит длиннумасива текущую}
 s:=5; {удаляем 5 элемент}
For i:=s to n do if i<>n then a[i]:=a[i]+1;
DEC(n);
end.

ТО есть переписываем (СДВИГАЕМ) массив, и уменьшаем на 1 длиннуобработки масива

Автор: Ars 13.03.2005 0:51

Большое спасибо!