Const MaxX = 3; MaxY = 3;
Type Element=Integer;
Var
T : Array [1..MaxX, 1..MaxY] of Element;
X1, Y1, X2, Y2 : Integer;
L1, L2 : Integer; {Poriadkoviye nomera elementov}
Tmp : Element;
Begin
WriteLn;
WriteLn('---------');
WriteLn ('T[1,1] .. T[',MaxX, ',', MaxY, '] =');
(******Vvod znacheniy*******)
For Y1 := 1 to MaxY do
For X1 := 1 to MaxX do Read (T[X1,Y1]);
(*******Sortirovka**********)
For L1 := 1 to MaxX*MaxY do Begin {Poriadkoviy nomer odnogo elementa}
X1 := (L1-1) mod MaxX + 1; {Rasschet ego koordinati X}
Y1 := (L1-1) div MaxX + 1; {Rasschet ego koordinati Y}
For L2 := L1+1 to MaxX*MaxY do Begin {Poriadkoviy nomer drugogo elementa}
X2 := (L2-1) mod MaxX + 1; {Rasschet ego koordinati X}
Y2 := (L2-1) div MaxX + 1; {Rasschet ego koordinati Y}
If T[X1, Y1] > T[X2, Y2] then Begin {Meniayem mestami}
Tmp := T[X1, Y1];
T[X1, Y1] := T[X2, Y2];
T[X2, Y2] := Tmp;
End;
End;
End;
(********Vivod rezultata**********)
WriteLn ('Result:');
For Y1 := 1 to MaxY do Begin
For X1 := 1 to MaxX do Begin
Write (T[X1, Y1], #32);
End;
WriteLn;
End;
End.
упорядовачение двухмерново масива
nado s cemto sravnivat no scem ja dumaju mozet pervij element s ostalnimi zatem vtoroj element s ostalnimi no neznaju kak eto zdelat .
kak podrugomu zdlat nepredstavliaju. i dango varianta toze pozalsta pomogite! :roll:
nikto neznaet :(
Цитата:
Originally posted by x3mik
nikto neznaet :(
nikto neznaet :(
На Паскале это довольно утомительно...
Переходи на С, тогда помогу... Хотя я помучаюсь и выложу тебе код на Паскале...
Заводишь какую-нибудь логическую переменную, isChaos, например. Образуешь цикл по всему массиву и сравниваешь два соседних элемента. если они стоят не в нужном порядке, меняшь их, потом isChaos=True. как дойдешь до конца массива, смотришь на isChaos. если он true, то начинай цикл заново (не забыв в начале сделать его false). если он false, то массив упорядочен.
Правда это упорядочивание по строкам, а я не знаю какое нужно тебе.
Цитата:
Originally posted by x3mik
uporiado4it ego v poriadke vozrastanija
uporiado4it ego v poriadke vozrastanija
Что именно тебе нужно? Двухмерный можно упорядочить по-разному. Наверное, тебе надо сначала по одному параметру, а потом по-другому?
Тогда самый простой способ – пузырьком. Если надо (еще), приведу пример на паскале.
Надо?
-1,5,2,8,-6,9,12,1,-6
v nacele on budet vigledit tak :
-1 5 2
8 -6 9
12 1 -6
tak kak zadajom takuju tablicu
t:array [1..3,1..3]of integer;
a dolzno polucitsa takaja tablica
-6 -6 -1
1 2 5
8 9 12
nadejus sejcias poniatno napisal :roll:
Код:
Можно, конечно, было и совсем по-другому сделать, например, использовать одномерный массив (номер в нем определялся бы по формуле (Y-1)*MaxX+X ). Еще, проще было бы начинать массивы не с нуля, а с единицы (тогда меньше бы отнимать и прибавлять пришлось бы). Циклы можно было организовывать с помощью перебора X1:Y1 и X2:Y2, а не рассчитывать их каждый раз. Но я решил, что так понятнее (стиль Паскаля).
Зайди ,к примеру, на algolist.manual.ru. Там довольно неплохо описаны алгоритмы сортировки, сам по нему к экзамену готовился.
bolsoe spasibo ja imenno etogo i hotel :) :)