Тема: Допоможіть із завданням пліз

Нехай дано двовимірний масив 3х3. Необхідно відсортувати елементи кожного стовпчика в порядку спадання, знайти максимальний елемент 2-го рядка відсортованого масиву.

2

Re: Допоможіть із завданням пліз

Правила читали?

http://s018.сайт-злодій/i504/1305/4e/128b3beefcef.jpg

Не кажу вже про мову...

Подякували: miroslav.chandler1

3

Re: Допоможіть із завданням пліз

Цілий день розробки пройшов не даремно. 8)

Прихований текст
;/* ary33s */;Copyright: ******@*****
             ;Licence: free for non commercial education only
             ;Waranty: AS IS
nl equ 0xA

   org 0
   use16

   jmp far 0x7C0:init;
ary:
db '123456789',0
init:
   mov   ax, cs;
   mov   ds, ax;
   push  ds;
   pop   es;
sbc:; / sort by columns
   xor   bx, bx; /1t column
   mov   cx, 3;
 .1:
   push  cx;
      mov   cx, 3;
    .2:
      xor   di, di; /1t row
      mov   si, 3;  /2d row
    .3:
      call  sdec;
      cmp   cx, 2;
       jnz  short .4;
      dec   cx;
      jmp   short .2;
    .4:
      mov   di, si; /look
      add   si, 3;  /forward
      loop  .3;
   inc   bx;
   pop   cx;
   loop  .1;
sbr:; / sort by row
   mov   bx, 3; /2d row
   mov   cx, bx;
 .1:
   xor   di, di; /1t col
   mov   si, 1;
 .2:
   call  sdec;
   cmp   cx, 2;
    jnz  short .3;
   dec   cx;
   jmp   short .1;
 .3:
   cmpsb; /look forward
   loop  .2;
dpy:
   call  sbuf;
   mov   si, buf;
   call  tty;
   mov   bx, 3;
   mov   al, [ary + bx];
   mov   [val], al;
   mov   si, faq;
   call  tty;
   mov   si, msg;
   call  tty;
dly:
   xor   ax, ax;
   int   0x16;
off:
db 0xEA,0,0,0xFF,0xFF;

;/procedures/
sdec:; / sort by decrease
   mov   al, [ary + bx + si];
   cmp   [ary + bx + di], al;
    ja   short .r;
   xchg  al, [ary + bx + di];
   mov   [ary + bx + si], al;
 .r:
retn;

sbuf:
   mov   si, ary;
   mov   di, buf;
   mov   cx, 3;
 .1:
   push  cx;
      mov   cx, 3;
      rep   movsb;
      inc   di;
   pop   cx;
   loop  .1;
retn;


tty:; /teletipe
   mov   ah, 0xE;
   jmp   .gch;
 .nl:; /new line
   int   0x10;
   mov   al, 0xD;
 .rpt:; /repeat
   int   0x10;
 .gch:; /get char
   lodsb;
   cmp  al, 0xA;
    jz  .nl;
   or   al, al;
    jnz .rpt;
retn;

faq:
db 'faq: '
val:
db ' ',nl,0
buf:
db '+++',nl
db '+++',nl
db '+++',nl,0
msg:
db 0x19,'key to reboot',nl,0

Що правда, відносно поставленого завдання є недолік. Програма після сортування стовпців масиву, перед виводом максимального елемента 2-го рядка, сортує в порядку спадання ще й його. Оскільки, я мабуть не вірно зрозумів другу частину завдання. [:}  Та все ж таки, всі хто знайде корисним може висловити подяку, кнопкою в низу справа, а обгрунтовану критику та ваші алодисменти готовий вислухати в хвості поста (тобто з низу). З приводу пожертв, звертайтесь в приват.

Подякували: truesupport, 0xDADA11C7, koala4