 |
Слияние массивов и упорядочивание - Вопросы и ответы, обсуждения - Ваши вопросы по Pascal/Delphi только в данном разделе |
19.12.2010, 15:27
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 30.07.2010
 Сообщений: 13
 Популярность: 12
 Сказал(а) спасибо: 8
Поблагодарили 1 раз в 1 сообщении
|
Слияние массивов и упорядочивание
Совсем недавно начали в инсте изучать делфи, вот задали такую задачку..
Вобщем надо обьеденить два массива, получить третий массив, который упорядочить по возрастанию, и определить новое количество элементов в массиве.
Надо сделать по этой задаче алгоритм блок-схему, ее вроде кое-как сделал, а вот как реализовать в делфи, не знаю
Кому несложно, помогите начинающему программисту  , пасибку не пожалею
|
|
|
19.12.2010, 16:11
|
#2
|
|
|
|
Разведчик
|
 Регистрация: 25.12.2009
 Сообщений: 29
 Популярность: 145
 Сказал(а) спасибо: 4
Поблагодарили 34 раз(а) в 20 сообщениях
|
Re: Слияние массивов и упорядочивание
Код:
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 в 16:18.
|
|
|
Пользователь сказал cпасибо:
|
|
19.12.2010, 16:54
|
#3
|
|
|
|
Разведчик
|
 Регистрация: 25.12.2009
 Сообщений: 29
 Популярность: 145
 Сказал(а) спасибо: 4
Поблагодарили 34 раз(а) в 20 сообщениях
|
Re: Слияние массивов и упорядочивание
Код:
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 запустилось =\
|
|
|
Пользователь сказал cпасибо:
|
|
21.12.2010, 11:09
|
#4
|
|
|
|
Разведчик
|
 Регистрация: 25.12.2009
 Сообщений: 29
 Популярность: 145
 Сказал(а) спасибо: 4
Поблагодарили 34 раз(а) в 20 сообщениях
|
Re: Слияние массивов и упорядочивание
Для рандома пишешь в самом начале где-нить
а в цикле пишешь
Код:
for i:= 1 to SizeF do
begin
a:=random(50);
FirstArr[i]=a;
end;
а для поиска надо массив через двойной цикл прогнать и искать на совпадение соседних элементов,если совпадение удалять
|
|
|
21.12.2010, 14:53
|
#5
|
|
|
|
Разведчик
|
 Регистрация: 25.12.2009
 Сообщений: 29
 Популярность: 145
 Сказал(а) спасибо: 4
Поблагодарили 34 раз(а) в 20 сообщениях
|
Re: Слияние массивов и упорядочивание
Код:
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.
фуф,написал)
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
[Обсуждение] Прокачивание
|
К0ТЁН0К |
Общение и обсуждение, архив Point Blank |
22 |
21.04.2010 19:12 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 23:22.
|
 |