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

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

Форум «Всё о Паскале» _ Задачи _ Работа с массивами

Автор: Гость 8.04.2007 16:53

Помогите если сможете!
Даны два массива из дробных чисел,состоящие из N и P. Элементы в них упорядочены по возрастанию.
{это я реализовала}
Вопрос: Как посторить упорядоченый по возрастанию массив из N+P элементов данных массивов? mellow.gif

Автор: Адель 8.04.2007 17:22

можно сначала построить массив N+P а потом ег отсортировать.
или пробежаться по элементам одного массива, "пихая" между ними элементы другого массива удоволетворяющие условию N[i]<=P[j]<N[i+1]

Автор: klem4 8.04.2007 17:38

Есть замечательня сортировка слияниями, воспользуйся поиском.

Автор: Гость 8.04.2007 17:46

Не смогла найти "сортировку слияниями" sad.gif Поиск мне показал всего несколько тем, но там нет такого...

Автор: volvo 8.04.2007 17:57

Здесь:
http://forum.pascal.net.ru/index.php?s=&showtopic=3065&view=findpost&p=29957
или
http://forum.sources.ru/index.php?showtopic=44916

Автор: Гость 9.04.2007 15:46

Спасибо. Но ссылка "Методы сортировок" не открылась. А вторую ссылку я прочитала и попробовала воспользоваться. Но! Я не поняла как работает эта сортировка...Если можно, объясните, а то что-то никак не разберусь какая переменная чему отвечает...sad.gif

Автор: Гость 10.04.2007 19:27

Можете помочь...?

k1:=n; k2:=m;
for i:=1 to k1 do
begin
c[i]:=a[i];
end;
for i:=1 to k2 do
begin
c[k1+i]:=b[i];
end;
for i:=1 to k1+k2 do write(c[i]:2 :2,' ');

Как этот код сделать через Процедуру? Подскажите, а то не могу понять...

Автор: Гость 11.04.2007 1:34

type mas=array [1..100] of real;
var i,n,m,p:byte;
a,b,c:^mas;
Procedure vvod(var n:byte; var a:mas);
var i:byte;
begin
Writeln('Vvedite kol-vo elementov massiva');
readln(n);
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
writeln;
end;
begin
New(a); New(b); New©;
Vvod(n,a^);
Vvod(m,b^);


Может такое быть? Что в самой программе данные динамические,а в процедуре статические?

Автор: volvo 11.04.2007 1:43

Да что вы так все заморачиваетесь с этим "статический/динамический"... Процедура она вообще всегда динамическая, ибо код и все локальные данные размещаются в стеке... А в приведенном фрагменте, кстати, mas передается по ссылке, то есть, указывает на данные, так что никаких (ни статических, ни динамических) данных, связанных с mas (кроме этого указателя) в процедуре нет...

А вообще, ответ на вопрос "Может ли такое быть" лучше всех даст Паскаль... Если программа компилируется, и выполняется, значит, может быть...

Автор: Malice 11.04.2007 12:23

Цитата(volvo @ 10.04.2007 22:43) *

Процедура она вообще всегда динамическая, ибо код и все локальные данные размещаются в стеке...

Про код в стеке это наверное шутка была smile.gif