Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Assembler
Перезагрузить страницу Как из матрицы удалить строку с введенным номером
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Belldandy Belldandy вне форума
Member
 
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.06.2003
По умолчанию Как из матрицы удалить строку с введенным номером - 05.06.2003, 07:19

Так вот, у меня для счастья есть все, кроме того, что я не знаю как из матрицы удалить строку с введенным номером и как потом распечатать получившуюся(процедура распечатки матриц работает и имеется)
Ответить с цитированием
  (#2 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 05.06.2003, 15:20

Просто сдвигаешь оставшиеся строки на 1 вверх и все.
Ответить с цитированием
  (#3 (permalink)) Старый
Belldandy Belldandy вне форума
Member
 
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.06.2003
По умолчанию Уточнения - 05.06.2003, 18:00

Код:
DSEG SEGMENT
; индивидуальные данные - начало
  N=4
  M dw 3
  A dw 20,3,-5
    dw 3,-5,0
    dw 4,23,-7
    dw -3,-7,-5
  B dw N dup(?)
  TextA db 'Матрица : ',13,10,'$'
  TextB db 'Массив В: ',13,10,'$'
;  индивидуальные данные - конец
  Prob db ' $'
  NL db 13,10,'$'              ;перевод строки
  Buffer db 6 dup (?),'$'
MST dw ?
  MSTR dw ?
DSEG ENDS

Stacks segment
   dw 140 dup (?)
Stacks ends

CODES SEGMENT
  MAIN PROC FAR
    Assume CS:codes, DS:dseg, SS:stacks
    Mov AX,Dseg
    Mov DS,AX
; индивидуальная часть программы - начало
    LEA DX,TextA
Call PRT                 ;печать 'Матрица А : '


   LEA BP,A                   ;в ВР адрес начала матрицы А
   Mov AX,M
   Mov MST,AX                ; MST - количество столбцов матрицы
   Mov AX,N
   Mov MSTR,AX               ; MSTR - количество строк матрицы
   CALL PRINTMATR

  Lea DX,TextB    ; печать "Массив В"
   Call PRT

  ;Пусть i - BX, j - CX, k – DI
Xor BX,BX                  ;блок 3
  xor DI,DI


 BL4: Xor CX,CX              ;блок 4

                   ;блок 5
   Mov SI,DI
   Sal SI,1
   Mov B[SI],0
 BL6:
   Mov AX,BX
   Imul M
   Add AX,CX
Sal AX,1
     Mov BP,AX
     Mov AX,A[DS:BP]
     CMP AX,0
     JG BL7
     JMP BL8
   BL7:
     Add B[SI],AX
   BL8:
     Inc CX    ; блок 8
     Cmp CX,M  ;  блок 9
     Jl BL6
     Cmp B[SI],0  ; блок 10
     Je BL12
     Mov AX,B[SI]
Call PRN
     Lea DX,NL
     Call PRT
     Inc DI       ;  блок 11
   BL12:
     Inc BX
     Cmp BX,N     ;  блок 13
     Jl BL4

;  индивидуальная программа - конец
    Mov AH,4CH
    Int 21h
  MAIN ENDP
 ;*********************************************************
  PRINTMATR PROC
push AX
   push BX
   push CX
   push DX
   push SI

  ;Пусть i - DX, j - CX
   Xor DX,DX                   
   Prmatr1:Xor CX,CX     

   Prmatr2:Mov AX,DX   
           push DX           
           MUL MST            
           Add AX,CX     
           SAL AX,1
            Mov SI,AX
            Mov AX,DS:[BP][SI]
            LEA BX,Buffer
            CALL CONVBA
            LEA DX,Buffer
            Mov AH,09h
            Int 21h

    LEA DX,Prob
    Int 21h

    POP DX
    Inc CX

   CMP CX,MST
   JL Prmatr2

   push DX
   LEA DX,NL
   Mov Ah,09h
   Int 21h
   POP DX

   Inc DX

   CMP DX,MSTR
   JL Prmatr1
POP SI
    POP DX
    POP CX
    POP BX
    POP AX
   RET
  PRINTMATR ENDP
 ;*********************************************************
  CONVBA PROC
 ;преобразует из формата с фиксированной точкой в формат цифровой
   push CX
   push DX                 ; сохраним регистры, которые будем портить
   push SI
   push AX
Mov CX,6                ; т.к. состоит из 6 байтов
  C10:Mov byte PTR [BX],' '; переслать ' ' по адресу, на кот. указывает BX
      Inc BX              ; увеличить на 1 адрес BX
      Loop C10            ; от содержимого СХ вычит. 1. Если СХ>0, то на С10
      Mov SI,10           ; чтобы получить число посл.
      OR AX,AX            ; полож. число или отриц. (логическое сложение)
      JNS C20             ; перейти если число отрицательное
      NEG AX              ; сделали его положительным
  C20:xor DX,DX           ; сложение по модулю 2
      Div SI              ; АХ/SI (AX-частное, DX-остаток)
      Add DX,30h          ; чтобы распечатать
      Dec BX              ; вернемся в предыдущий байт
      Mov [BX],DL         ; DL -> по адресу регистра ВХ
      OR AX,AX            ; проверка, что в АХ
      JNZ C20             ; если не 0, то на С20
POP AX              ; вернем из стека АХ (он был последним)
       OR AX,AX
       JNS C30
       Dec BX
       Mov byte PTR [BX],'-'   ; перешлем "-" по адресу ВХ
   C30:POP SI
       POP DX
       POP CX
     RET                       ; возврат в основную процедуру
  CONVBA endp
 ;*********************************************************
  PRT PROC
    push AX
    Mov AH,09h
    Int 21h
POP AX
    RET
  PRT ENDP
 ;*********************************************************
  PRN PROC             ;печать числа
    push BX
    push DX
    LEA BX,Buffer
    CALL CONVBA
    Mov DX,BX
    CALL PRT
    POP DX
    POP BX
    RET
  PRN ENDP
;*****************************************************

CODES ENDS
END MAIN
ладно.. вот как ее преобразовать в индивидуалке чтобы она делала то, что надо мне ( убирала строку с заданным номером)
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти количество строк, похожих на первую строку данной матрицы Саломон Pascal 1 14.06.2011 22:21
Вставить пустую строку после строки файла с номером K Саломон Pascal 0 14.06.2011 14:31
Как удалить слово с заданным номером Natafka Вопросы начинающих программистов 1 23.06.2010 11:18
Распечатывание матрицы в строку Krazyzy С/С++ 4 18.12.2009 22:58
Как удалить последнюю строку если она пустая Kate&Lena Visual C++ 4 19.08.2009 17:34
Как удалить адресную строку в браузере? Alexuc Любые вопросы от новичков 5 01.12.2008 20:01
Как удалить последнюю строку в файле Marla Singer Perl 1 07.11.2008 08:14
Как удалить строку объекта типа TStringList Lin@ C++ Builder 3 18.08.2006 17:46
Как удалить строку из таблицы elf_grey C++ Builder 1 20.07.2006 16:25
Как удалить из файла одну строку dazhdbog C++ Builder 3 30.12.2005 17:32
Как удалить элемент с номером N из списка? March Prolog 1 10.01.2005 16:59
Как удалить строку из текстового файла Yor1k Visual C++ 4 28.02.2004 16:58



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов