IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Возвращение былого порядка массиву
Tribunal
сообщение 8.06.2006 6:53
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

Репутация: -  0  +


есть исходный массив и соответствующий ему массив номеров эл-тов.
нужно перемешать эл-ты массива номеров и в соответствии с ним основной массив.
затем вернуть его изначальный порядок.
вот то,что у меня получилось...
но я явно как-то неправильно связываю сортировку массива номеров с перемещением эл-тов в основном массиве.только вот ничего другого никак придумать не могу...помогите,пожалуйста...

type
artype=array [1..20] of byte;
var
n,i,j,t,h:byte;
k,d,k1,d1:artype;

begin
write('Enter the number of elements ');readln(n);
randomize;

//create
writeln('Ishodniy massiv:');
for i:=1 to n do
begin
d[i]:=random(20);
write(d[i],' ' );
k[i]:=i;
end;
writeln;

//mix
writeln('Peremeshannie elementi massiva:');
i:=1;
while i<=n do
begin
t:=random(n)+1;
if i=1 then
begin
k1[i]:=t;
d1[i]:= d[t];
write(d1[i],' ');
inc(i);
end
else
begin
j:=1;
h:=0;
while j<i do
begin
if k1[j]=t then inc(h);
inc(j);
end;
if h=0 then
begin
k1[i]:=t;
d1[i]:= d[t];
write(d1[i],' ');
inc(i);
end;
end;
end;
writeln;

//sort {вот здесь идет возвращение былого порядка}
for i:=1 to n do
begin
t:=k1[i];
j:=i-1;
while (t<k1[j]) do
begin
k1[j+1]:=k1[j];
dec(j);
end;
k1[j+1]:=t;
t:=d1[j];
d1[j]:=d1[j+1];
d1[j+1]:=t;
end;

writeln('Elementi v vostanovlennom poryadke:');
for i:=1 to n do write(d1[i],' ');
readln;
end.


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 17:48
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"