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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2009, 01:03   #1
Lazy_Bitch
Пользователь
 
Регистрация: 29.06.2009
Сообщений: 10
По умолчанию Сортировка элементов в матрице

Дана матрица, требуется отсортировать элементы каждого столбца по возрастанию. Не могу сообразить с процедурой сортировки

Код:
Program array;
const nrow=3;
ncol=4;
Type
 matrix=array [1..nrow,1..ncol] of integer;    
 vector=array [1..ncol] of longint;
var
 a:matrix; b:vector;

{Процедура ввода данной матрицы}
Procedure input (var a:matrix);
var i, j:integer;
Begin
writeln ('BBeguTe eJIeMeHTbI MaccuBa: ');
for i:=1 to nrow do       
for j:=1 to ncol do
readln(a[i,j]);
end;

{Процедура вывода исходной матрицы}
Procedure output (const a:matrix);
var i, j:integer;
begin
for i:=1 to nrow do
 begin
for j:=1 to ncol do     
write (a[i,j]:7);             
writeln;
 end;
readln;
end;

{Процедура сортировки}
Procedure sort(var a:matrix; var b:vector);
var i, j, x, min:integer;
Begin                  
for j:=1 to ncol-1 do
begin
min:=j; x:=b[j]
for i:=j+1 to ncol do  
if b[i]<x then 
begin
min:=i;
x:=b[min];
end;
b[min]:=b[j];
b[j]:=x;
for i:=1 to nrow do
begin                
x:=a[i,j];
a[i,j]:=a[i,min];
a[i,min]:=x;
end;
end;
End;

BEGIN          
input(a);  
output(a); 
sort(a,b);    
output(a);  
END.

Последний раз редактировалось SuperVisor; 26.09.2009 в 10:04.
Lazy_Bitch вне форума Ответить с цитированием
Старый 26.09.2009, 02:32   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Сортировка пузырьком, тип vector не нужен
Код:
procedure sort(var a: matrix);
var i, j, k: integer;
    buf: integer;
begin
for i := 1 to ncol do
  for j := nrow downto 2 do
    for k := 1 to j-1 do
      if a[k, i] > a[k+1, i] then
        begin
	buf := a[k, i];
	a[k, i] := a[k+1, i];
	a[k+1, i] := buf;
	end;
end;
+ измените имя программы: array - зарезервированное слово
+ в считывание read вместо readln
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 26.09.2009, 16:22   #3
Lazy_Bitch
Пользователь
 
Регистрация: 29.06.2009
Сообщений: 10
По умолчанию

Спасибо огромное
Lazy_Bitch вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в сглаженой матрице найти сумму модулей элементов расположенных ниже главной диагонали Sergeo_89 Паскаль, Turbo Pascal, PascalABC.NET 8 07.12.2010 00:02
Сортировка столбцов в матрице WhistlerW Общие вопросы Delphi 3 12.06.2009 23:01
поиск элементов в матрице, не равных нулю ciaonataha Общие вопросы C/C++ 37 29.03.2009 21:29
Оптимизировать алгоритм вычисления сумм элементов главной и побочной диагонали в матрице - Delphi r9m Помощь студентам 5 04.02.2009 11:01
поможите человеку плиз:)сортировка выбором в матрице. benzus Паскаль, Turbo Pascal, PascalABC.NET 19 27.04.2008 15:47