Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2007, 22:12   #1
cornholio
 
Регистрация: 26.11.2007
Сообщений: 6
Восклицание сортировка двумерного массива

Народ! Хелп... Необходимо
Составить программу сортировки двумерного массива по возрастанию. Использовать метод "сортировки выбором".
я пробовал переделать код сортировки выбором одномерного массива, но чет не выходит мот кто поможет
Листинг моей проги(что-то не палит)
program zad30;
uses crt;
const N=2; {Количество строк массива}
M=3; {Количество столбцов массива}
var a: array[1..N,1..M] of integer; {массив}
i,j,j1,z: integer; {счётчики для цикла}
c: integer; {Переменная для промежуточного хранения}
c2: integer; {Переменная для промежуточного хранения}
c3: integer; {Переменная для промежуточного хранения}
begin
clrscr;
for i:=1 to n do
for j:=1 to m do
readln(a[i,j]);
clrscr;
writeln('Введенный массив:');
for i:=1 to n do begin
for j:=1 to m do
write(a[i,j],' ');
writeln
end;
for i:=1 to N-1 do begin
for z:=1 to M-1 do begin
{цикл по первому обрабатываемому элементу массива}
c2:=i; {индекс предполагаемого минимального элемента}
c3:=z;
{поиск минимального элемента}
for j:=i+1 to N do
for j1:=z+1 to M do
if a[c2,c3]>a[j,j1] then begin
c2:=j;c3:=j1;end;
{если в c2 индекс не минимального элемента,то в c2аписается индекс меньшего элемента}
c:=a[i,z];a[i,z]:=a[c2,c3];a[c2,c3]:=c; {Меняем местами элемент массива}
end; end;
writeln ('Отсортированный массив:');
for i:=1 to n do begin
for j:=1 to m do
write(a[i,j],' ');
writeln;
end;
READKEY;
end.
cornholio вне форума Ответить с цитированием
Старый 27.11.2007, 23:36   #2
cornholio
 
Регистрация: 26.11.2007
Сообщений: 6
По умолчанию

Переписал ту чушь, что под пиво писал, ща все работает , но будет ли это сортировка выбором???? (прокомментируйте если да, а если нет , то мот кто дополнит код!!! )
uses Crt;
const n = 4;
m = 6;
var a: array[1..n,1..m] of integer;
a1: array[1..n*m,0..2] of integer;
i,j,i1: integer;
t1,t2,t3: integer;
begin
ClrScr;
Randomize;
{Vvodim massiv}
for i:=1 to n do begin
for j:=1 to m do begin
a[i,j]:=Random(9)+1;
a1[(i-1)*m+j,0]:=a[i,j];
a1[(i-1)*m+j,1]:=i;
a1[(i-1)*m+j,2]:=j;
Write(a[i,j]:4);
end;
Writeln;
end;
{Sortiruem dopolnitelniy massiv}
for i:=1 to n*m-1 do begin
for j:=i+1 to n*m do begin
if (a1[i,0]>a1[j,0]){ or
((a1[i,0]>=a1[j,0]) and ((a1[i,1]-1)*m+a1[i,2]>(a1[j,1]-1)*m+a1[j,2]))} then begin
t1:=a1[i,0]; t2:=a1[i,1]; t3:=a1[i,2];
a1[i]:=a1[j];
a1[j,0]:=t1; a1[j,1]:=t2; a1[j,2]:=t3;
end;
end;
end;
{Vozvrashaem v ishodniy massiv otsortirovannie znacheniya}
j:=0; i:=1;
for i1:=1 to n*m do begin
Inc(j);
if j>m then begin
j:=1;
Inc(i);
end;
a[i,j]:=a1[i1,0];
end;
{Vivodim massiv na ekran}
Writeln;
for i:=1 to n do begin
for j:=1 to m do begin
Write(a[i,j]:4);
end;
Writeln;
end;
Readln;
end.
cornholio вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод двумерного массива Kocapb Общие вопросы C/C++ 4 11.10.2012 11:05
Сортировка двумерного массива Makarov Помощь студентам 8 29.10.2011 11:55
Сортировка двумерного числового массива «спиралью» vicvtor Помощь студентам 2 06.07.2011 09:10
Поворот двумерного массива Guest_ Общие вопросы C/C++ 6 24.12.2007 23:02
Сортировка двумерного массива произвольной длины. Visual Basic Pekc Помощь студентам 0 25.11.2007 19:30