PDA

View Full Version : سوال: مرتب سازی عناصر آرایه دو بعدی براساس سطرهای دیگه آرایه



Fastdesign
جمعه 18 آذر 1390, 12:59 عصر
سلام
آرایه با این مقدار دارم :
Edge:array[1..8,1..3] of Integer;
با فرض اینکه عناصر آرایه با این صورت وارده کرده باشیم :

78938

حالا می خوام ستون سوم آرایه را مرتب سازی کنم بطوری که وقتی ستون سوم مرتب شد ستون اول و دوم هم براساس ستون سوم مکانشون تغییر کنه.
مثل این :

78939
.................................................. .................................................. ...........................................

من با مرتب سازی حبابی به این صورت براش نوشتم فقط ستون سوم مرتب میشه یعنی ستون اول و دوم براساس ستون سوم مکانشون تغییر نمی کنه :
for I := 1 to 7 do
for j := i+1 to 8 do
if edge[i,3]>edge[j,3] then
begin
temp:=edge[i,3];
edge[i,3]:= edge[j,3];
edge[j,3]:=temp;
end;
for I := 1 to 3 do
for j := 1 to 8 do
StringGrid2.Cells[i-1,j-1]:=inttostr(edge[j,i]);

دوستان اگه کسی را حلی داره که ستون اول و دوم هم براساس ستون سوم مکانشون تغییر کنه من را راهنمایی کنه .

با تشکر
یا حق

مسعود اقدسی فام
جمعه 18 آذر 1390, 14:22 عصر
سلام
آرایه با این مقدار دارم :
Edge:array[1..8,1..3] of Integer;
با فرض اینکه عناصر آرایه با این صورت وارده کرده باشیم :

78938

حالا می خوام ستون سوم آرایه را مرتب سازی کنم بطوری که وقتی ستون سوم مرتب شد ستون اول و دوم هم براساس ستون سوم مکانشون تغییر کنه.
مثل این :

78939
.................................................. .................................................. ...........................................

من با مرتب سازی حبابی به این صورت براش نوشتم فقط ستون سوم مرتب میشه یعنی ستون اول و دوم براساس ستون سوم مکانشون تغییر نمی کنه :
for I := 1 to 7 do
for j := i+1 to 8 do
if edge[i,3]>edge[j,3] then
begin
temp:=edge[i,3];
edge[i,3]:= edge[j,3];
edge[j,3]:=temp;
end;
for I := 1 to 3 do
for j := 1 to 8 do
StringGrid2.Cells[i-1,j-1]:=inttostr(edge[j,i]);

دوستان اگه کسی را حلی داره که ستون اول و دوم هم براساس ستون سوم مکانشون تغییر کنه من را راهنمایی کنه .

با تشکر
یا حق






در اون قسمت که مقادیر ستون سوم رو داخل حلقه عوض می‌کنید، دقیقا همون دستورها رو برای ستون دوم و اول هم بنویسید. اونها هم جابجا می‌شن.