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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2011, 09:01   #1
Leshiy1
Форумчанин
 
Аватар для Leshiy1
 
Регистрация: 24.09.2009
Сообщений: 104
По умолчанию Sortmatr

здравствуйте всем.
В матрице надо чтобы сортировка шла снизу в верх и дойдя до максимального элемента сворачивала направо по диагонали.

Код:
Program SortMatr;
 Uses Crt;
 const n=7; m=8;
 var i,j,x,y,ym,xm,max,kt,xp,yp,b:integer;
     A:array[0..n-1,0..m-1] of integer;
 begin ClrScr; Randomize;
   for y:=0 to n-1 do
   begin writeln;
     for x:=0 to m-1 do
     begin
       A[y,x]:=random(10); write( A[y,x]:3);
     end;
   end;
 writeln;
 ym:=0; xm:=0; max:=A[ym,xm];
 for y:=0 to n-1 do
  for x:=0 to m-1 do
  if max<A[y,x] then begin max:=A[y,x];
     ym:=y; xm:=x; end;
     writeln;
     write('max=',max, ' xm=',xm, ' ym=',ym);

  if xm<5  then kt:=(8-ym)+(ym+1)
           else kt:=(8-ym)+(8-xm);

  for i:=6 to kt+1 do
  begin
    yp:=6; xp:=xm;
    for j:=6 to kt+2 do
    begin
      if j>ym
      then begin x:=xp;   y:=yp-1; end
      else begin x:=xp+1; y:=yp-1; end;

    if A[y,x]<A[yp,xp]
    then
    begin b:=A[y,x]; A[y,x]:=A[yp,xp]; A[yp,xp]:=b; end;
    xp:=x; yp:=y;
    end; end;

  writeln; writeln;
    for i:=0 to n-1 do
  begin
    for j:=0 to m-1 do write(A[i,j]:3);
  writeln;
  end;


 Readln;
 End.
У меня почему то все сортирует снизу и до конца по прямой. Как её свернуть на диагональ?
Leshiy1 вне форума Ответить с цитированием
Ответ


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

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

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