Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 13.12.2011, 15:20   #1
adidas
 
Регистрация: 29.05.2009
Сообщений: 3
Репутация: 10
По умолчанию Сортировка Шелла

Нашел задачу на форуме, в которой сортируются столбцы по значениям последней строки, методом сортировки Шелла и у меня не получается ее переделать, что бы сортировались строки по возрастанию значений последнего столбца.

Код:
Program a334;
type
  ta=array[1..1000,1..1000] of integer;
var
  a:ta;
  i,j:integer;
  n,m:integer;

procedure shell(var a:ta); { sortirovka shella }
var c,z,incr,k:integer;
begin
for  k:=1 to n do begin
incr:= m div 2;
while  incr>0 do
  begin
    for  z:=incr+1 to m do
      begin

	      i:= z-incr;
	      while  i>0 do
	        if a[i,k]>a[i+incr,k] then
            begin
	  	        c:=a[i,k];
              a[i,k]:=a[i+incr,k];
              a[i+incr,k]:=c;
			        j:=i-incr;
	          end
	                            else
            i:=0;   { ostonovka proverki }
      end;
        incr:= incr div 2
   end; end;
  end; { konec sortirovki shella }
procedure shell2(var a:ta); { sortirovka shella }
var c,z,incr,k:integer;
begin
incr:= m div 2;
while  incr>0 do
  begin
    for  z:=incr+1 to n do
      begin

	      i:= z-incr;
	      while  i>0 do
	        if a[m,i]>a[m,i+incr] then
            begin
            for k:=1 to  m  do
            begin
	  	        c:=a[k,i];
              a[k,i]:=a[k,i+incr];
              a[k,i+incr]:=c;
			        j:=i-incr;
            end;
	          end
	                            else
            i:=0;   { ostonovka proverki }
      end;
        incr:= incr div 2
   end;
  end; { konec sortirovki shella }

begin
  write('Vvedite kolichestvo strok: ');
  readln(m);
  write('Vvedite kolichestvo stolbcov: ');
  readln(n);
  for i:=1 to m do
  for j:=1 to n do
    begin
      write('Vvedite ',i,j,' element matreci A: ');
      readln(a[i,j]);
    end;
writeln('matrica A');
 for i:=1 to m do
   begin
    for j:=1 to n do
     write (a[i,j],' ');
    writeln;
   end;
   
shell(a);

writeln('matrica B');
 for i:=1 to m do
   begin
    for j:=1 to n do
     write (a[i,j],' ');
    writeln;
   end;
   
shell2(a);

writeln('matrica C');
 for i:=1 to m do
   begin
    for j:=1 to n do
     write (a[i,j],' ');
    writeln;
   end;


readln;
end.
adidas вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль 11 11.03.2012 12:18
Сортировка Шелла QuadroX Фриланс 1 29.05.2010 03:52
Сортировка методом Шелла Nostalgia Помощь студентам 0 12.04.2010 14:13
сортировка Шелла pilot76 Помощь студентам 2 17.08.2009 18:05


01:09.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru