PDA

Просмотр полной версии : [Помогите!] Слияние массивов и упорядочивание


108omg
19.12.2010, 14:27
Совсем недавно начали в инсте изучать делфи, вот задали такую задачку..
Вобщем надо обьеденить два массива, получить третий массив, который упорядочить по возрастанию, и определить новое количество элементов в массиве.

Надо сделать по этой задаче алгоритм блок-схему, ее вроде кое-как сделал, а вот как реализовать в делфи, не знаю :sad:

Кому несложно, помогите начинающему программисту :pandal: , пасибку не пожалею

Fiery Dragon
19.12.2010, 15:11
const SizeF:integer=5;
SizeS:integer=5;
SizeT:integer=10;
var
FirstArr:array [1..SizeF] of integer;
SecondArr:array[1..SizeS] of integer;
ThdArr:array[1..SizeT] of integer;
i,j,min,count:integer;
begin
j:=1;
count:=0;

for i:= 1 to SizeF do
begin
writeln('Введите FirstArr[',i,'] элемент: ');
readln( FirstArr[i]);
end;

for i:= 1 to SizeS do
begin
writeln('Введите SecondArr[',i,'] элемент: ');
readln( SecondArr[i]);
end;

for i:= 1 to SizeT do
begin
if (i<=SizeF) then begin
ThdArr[i]:=FirstArr[i] ;
inc(count);
end
else
begin
ThdArr[i]:=SecondArr[j];
inc(count);
inc(j);
end;
end;


for i:=2 to SizeT do
for j:=SizeT downto i do
if ThdArr[j-1]>ThdArr[j] then
begin
min:=ThdArr[j-1];
ThdArr[j-1]:=ThdArr[j];
ThdArr[j]:=min;
end;

for i:= 1 to SizeT do
writeln( ThdArr[i]);
writeln('Общее количество элементов:',count);

end.

Fiery Dragon
19.12.2010, 15:54
var
FirstArr:array [1..5] of integer;
SecondArr:array[1..5] of integer;
ThdArr:array[1..10] of integer;
i,j,min,count,SizeF,SizeS,SizeT:integer;
begin
j:=1;
count:=0;
SizeF:=5;
SizeS:=5;
SizeT:=10;

for i:= 1 to SizeF do
begin
writeln('Введите FirstArr[',i,'] элемент: ');
readln( FirstArr[i]);
end;

for i:= 1 to SizeS do
begin
writeln('Введите SecondArr[',i,'] элемент: ');
readln( SecondArr[i]);
end;

for i:= 1 to SizeT do
begin
if (i<=SizeF) then begin
ThdArr[i]:=FirstArr[i] ;
inc(count);
end
else
begin
ThdArr[i]:=SecondArr[j];
inc(count);
inc(j);
end;
end;


for i:=2 to SizeT do
for j:=SizeT downto i do
if ThdArr[j-1]>ThdArr[j] then
begin
min:=ThdArr[j-1];
ThdArr[j-1]:=ThdArr[j];
ThdArr[j]:=min;
end;
writeln(' ');
for i:= 1 to SizeT do
writeln( ThdArr[i]);
writeln('Общее количество элементов:',count);
readln(i);

end.

попробуй так...константы дельфи чего-то не видет,а в pascal abc запустилось =\

Fiery Dragon
21.12.2010, 10:09
Для рандома пишешь в самом начале где-нить
Randomize;
а в цикле пишешь


for i:= 1 to SizeF do
begin
a:=random(50);
FirstArr[i]=a;
end;


а для поиска надо массив через двойной цикл прогнать и искать на совпадение соседних элементов,если совпадение удалять

Fiery Dragon
21.12.2010, 13:53
var
FirstArr:array [1..5] of integer;
SecondArr:array[1..5] of integer;
ThdArr:array[1..10] of integer;
tempArr:array [1..10] of integer;
i,j,z,min,count,SizeF,SizeS,SizeT,rand:integer;
temp:boolean;
begin
j:=1;
count:=0;
SizeF:=5;
SizeS:=5;
SizeT:=10;
randomize;
for i:= 1 to SizeF do
begin
rand:=random(10);
FirstArr[i]:=rand ;
end;

for i:= 1 to SizeS do
begin
rand:=random(10);
SecondArr[i]:=rand;
end;

for i:= 1 to SizeT do
begin
if (i<=SizeF) then begin
ThdArr[i]:=FirstArr[i] ;
inc(count);
end
else
begin
ThdArr[i]:=SecondArr[j];
inc(count);
inc(j);
end;
end;


for i:=2 to SizeT do
for j:=SizeT downto i do
if ThdArr[j-1]>ThdArr[j] then
begin
min:=ThdArr[j-1];
ThdArr[j-1]:=ThdArr[j];
ThdArr[j]:=min;
end;
writeln(' ');
count:=0;
z:=1;
writeln('Massiv do proverki na povtorbI:');

for I := 1 to SizeT do
writeln(ThdArr[i]);
writeln(' ');


For i := 1 to SizeT do
Begin
temp := false;
For j := 1 to 10 do
begin
if (i=j) then continue
else begin
If ThdArr[i] = ThdArr[j] then
begin
temp := true;
break;
end;
end;

end;
if temp <> true then
begin
tempArr[z]:= ThdArr[i];
inc(z);
end;
End;

writeln('massiv bez povtor element:');
for I := 1 to z-1 do
writeln(tempArr[i]);
writeln('Vcego elementov v novom massive: ',z-1);

readln(i);
end.

фуф,написал)