Другие языки программирования и технологии
Помогите с задачкой на Pascal'e (МАССИВЫ)!
есть 2 массива чисел (x,y они задают координаты - каждому x соответствует y) Один из них я сортирую по возрастанию, что мне нужно сделать со 2ым чтобы не потерять изначальное соответствие? (напишите плис код или киньте идейку)
Доброго времени суток.
Вариантов несколько. Наиболее простой, это действительно записи. Второй вариант, это при перестановке элементов одного массива, одновременно переставлять и элементы другого. И третий, это объявить еще один массив в котором элементами будут индексы и сортировать эти индексы. Например, так.
const
N = 10; {размерность массива}
var
Arr : array [1..N] of Integer; {массив чисел}
Idx : array [1..N] of Integer; {массив индексов}
i,j : Integer;
T : LongInt;
begin
ClrScr;
Randomize;
{заполним массивы}
for j:=1 to N do begin
Arr[j] := Random(20);
Idx[j] := j;
Write(Arr[j],' '); {вывод элемента массива для контроля}
end;
WriteLn;
{сортировка по возрастанию пузырьком элементов индексного массива}
for i := 1 to N do
for j:=1 to N-i do begin
if Arr[Idx[j]] > Arr[Idx[j+1]] then begin {если текущий элемент больше следующего переставим их индексы}
T := Idx[j]; {сначала сохраним индекс в промежуточной переменной}
Idx[j] := Idx[j+1]; {переставляем индексы}
Idx[j+1] := T; {восстанавливаем значение}
end;
end;
for j := 1 to n do Write(Arr[Idx[j]],' '); {вывод отстртированного массива}
ReadLn;
end.
Если в начале имелось однозначное соответсвие между двумя первыми массивами, то после сортировки индексов оно не нарушится.
Удачи!
Вариантов несколько. Наиболее простой, это действительно записи. Второй вариант, это при перестановке элементов одного массива, одновременно переставлять и элементы другого. И третий, это объявить еще один массив в котором элементами будут индексы и сортировать эти индексы. Например, так.
const
N = 10; {размерность массива}
var
Arr : array [1..N] of Integer; {массив чисел}
Idx : array [1..N] of Integer; {массив индексов}
i,j : Integer;
T : LongInt;
begin
ClrScr;
Randomize;
{заполним массивы}
for j:=1 to N do begin
Arr[j] := Random(20);
Idx[j] := j;
Write(Arr[j],' '); {вывод элемента массива для контроля}
end;
WriteLn;
{сортировка по возрастанию пузырьком элементов индексного массива}
for i := 1 to N do
for j:=1 to N-i do begin
if Arr[Idx[j]] > Arr[Idx[j+1]] then begin {если текущий элемент больше следующего переставим их индексы}
T := Idx[j]; {сначала сохраним индекс в промежуточной переменной}
Idx[j] := Idx[j+1]; {переставляем индексы}
Idx[j+1] := T; {восстанавливаем значение}
end;
end;
for j := 1 to n do Write(Arr[Idx[j]],' '); {вывод отстртированного массива}
ReadLn;
end.
Если в начале имелось однозначное соответсвие между двумя первыми массивами, то после сортировки индексов оно не нарушится.
Удачи!
А что если сделать массив структур (record в паскале) с двумя полями каждая (x, y) и сортировать по одному из полей
Похожие вопросы
- помогите решить задачки по Pascal
- Друзья, помогите с задачкой на Pascal
- Помогите сделать задания по програмированию(двумерные массивы)Turbo Pascal
- Pascal одномерные массивы.
- Pascal . Дан массив вещественных чисел. Найти сумму элементов, номера которых являются простыми числами
- Помогите решить задачу pascal. Двумерные массивы (подробно)
- pascal одномерные массивы. дан массив А(30).
- Помогите решить задачку на python или pascal
- Pascal. Двумерный массив
- Pascal. Сортировка массива.