русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Лабораторная работа 4. Обработка двумерных массивов.


Дата добавления: 2014-11-27; просмотров: 993; Нарушение авторских прав


Целью лабораторной работы является изучение способов обработки двумерных массивов.

Для выполнения этой лабораторной работы следует переписать с дискеты текст программы “Labn4.ASM”. В сегмент данных вписать свои переменные и их значения. В сегмент кодов в процедуру MAIN ввести операторы, выполняющие действия, соответствующие индивидуальному заданию.

Данное задание использует процедуру печати элементов матрицы PRMATR.

Ниже приведен пример решения следующей задачи:

Задана матрица А(N,M). Образовать массив В из сумм положительных чисел в каждой строке матрицы.

Контрольный пример:

Матрица А: 20 3 -5

3 -5 0

4 23 –7

-3 -7 -5

Будет получен массив В (23, 3, 27, 0).

Отметим, что если в строке нет положительных чисел, то сумма равна 0.

При решении данной задачи печать элементов массива В проводилась по мере получения элементов. Другой возможный вариант – напечатать массив В после его полного образования, используя для этого процедуру печати массива (см. лабораторную работу 3).

 

 

Рис.3. Блок-схема к лабораторной работе 4

 

Текст программы:

DSEG SEGMENT

; индивидуальные данные - начало

N=4

M dw 3

А 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

Xor BX,BX ;блок 4

BL5:

Xor CX,CX ;блок 5

Mov SI,BX

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

Mov AX,B[SI] ;блок 10

Call PRN

Lea DX,NL

Call PRT

Inc BX ; блок 11

Cmp BX,N ; блок 12

Jl BL5

; индивидуальная программа – конец

mov ah,1

int 21h

 

Mov AH,4CH

Int 21h

MAIN ENDP

;*********************************************************

PRINTMATR PROC ; процедура печати матрицы построчно

; в регистре ВР адрес начала матрицы, MST – количество столбцов

; матрицы, MSTR- количество строк.

рush AX

push BX

push CX

push DX

push SI

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

Xor DX,DX

Prmatr1:

хor 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

CONVBA endp

;*********************************************************

PRT PROC ; процедура печати текста

PRT ENDP

;*********************************************************

PRN PROC ; процедура печати числа

PRN ENDP

;*****************************************************

CODES ENDS

END MAIN

 

Варианты заданий:

  1. Задана матрица А(N,M) и число 0<J<M. Расположить строки матрицы А в порядке возрастания элементов J-ого столбца.
  2. Задана матрица А(N,M) и массив В(N). Напечатать номера столбцов в матрице А, совпадающих с массивом В.
  3. Задана матрица А(N,M) и массив В(M). Напечатать номера строк в матрице А, совпадающих с массивом В.
  4. Задана матрица А(N,M) и число 0<J<M. Убрать из матрицы J-ый столбец. Напечатать новую матрицу А(N,M-1).
  5. Задана матрица А(N,M) и число 0<I<N. Убрать из матрицы I-ую строку. Напечатать новую матрицу А(N-1,M).
  6. Задана матрица А(N,M) и число 0<I<N. Расположить столбцы матрицы в порядке убывания элементов в I-о1 строке.
  7. Задана матрица А(N,M) и массив В(К), в котором записаны номера строк матрицы А в любом порядке и массив С(К), в котором записаны номера столбцов из матрицы А в любом порядке. Найти сумму элементов матрицы А, стоящих на пересечении Вi –ой строки и Сi –ого столбца (i меняется от 0 до к-1).
  8. Задана матрица А(N,M). Найти первый столбец, в котором содержатся одни нули, и убрать его из матрицы. Если такого столбца нет, то напечатать это.
  9. Задана матрица А(N,M). Найти все столбцы, состоящие только из положительных чисел, и напечатать их номера. Если таких столбцов нет, то напечатать это.
  10. Задана матрица А(N,M). Найти первую строку, состоящую только из отрицательных чисел, и убрать ее из матрицы. Если такой строки нет, то напечатать это.
  11. Задана матрица А(N,M). Найти все строки, состоящие только из отрицательных чисел. Создать массив В из номеров этих строк.
  12. Задана матрица А(N,M). Найти сумму чисел, расположенных выше главной диагонали.
  13. Задана матрица А(N,M) и два числа I1 и I2. ( I1 <I2<M). Удалить из матрицы А строки, начиная с I1 и кончая I2 включительно.
  14. Задана матрица А(N,M) и массив В(К), где 0<=Bi<=M. Просуммировать элементы в столбцах, номера которых заданы в массиве В. Если какой-то номер в массиве В встретился больше 1 раза, то учитывать этот номер только один раз.
  15. Задана матрица А(N,M) и число D. Образовать массив В из номеров строк матрицы А, сумма элементов в которых <D.
  16. Задана матрица А(N,M) и число D. Образовать массив В из номеров столбцов матрицы А, сумма элементов в которых <D.
  17. Задана матрица А(N,M). Сделать эту матрицу квадратной, убрав из нее лишние столбцы или строки.
  18. Задана квадратная матрица А(N,N). N – нечетное число. Двумя диагоналями матрица делится на четыре треугольника. Нумерация треугольников сверху по часовой стрелке. Найти сумму чисел в первом треугольнике. Элементы, входящие в диагонали, считать принадлежащими соответствующим треугольникам.
  19. Задана квадратная матрица А(N,N). N – нечетное число. Двумя диагоналями матрица делится на четыре треугольника. Нумерация треугольников сверху по часовой стрелке. Найти сумму чисел во втором треугольнике. Элементы, входящие в диагонали, считать принадлежащими соответствующим треугольникам.
  20. Задана квадратная матрица А(N,N). N – нечетное число. Двумя диагоналями матрица делится на четыре треугольника. Нумерация треугольников сверху по часовой стрелке. Найти сумму чисел в третьем треугольнике. Элементы, входящие в диагонали, считать принадлежащими соответствующим треугольникам.
  21. Задана квадратная матрица А(N,N). N – нечетное число. Двумя диагоналями матрица делится на четыре треугольника. Нумерация треугольников сверху по часовой стрелке. Найти сумму чисел в четвертом треугольнике. Элементы, входящие в диагонали, считать принадлежащими соответствующим треугольникам.
  22. Задана квадратная матрица А(N,N). N – нечетное число. Двумя диагоналями матрица делится на четыре треугольника. Нумерация треугольников сверху по часовой стрелке. Поменять местами элементы в 1-ом и 3-ем треугольниках. Элементы, находящиеся на диагоналях, считать принадлежащими соответствующим треугольникам.
  23. Задана матрица А(N,M). Найти номер строки, в которой содержится максимальное число нулей. Если таких строк несколько, то напечатать номер только первой строки.
  24. Задана матрица А(N,M). Найти номера столбцов, в которых содержится минимальное число отрицательных чисел.
  25. Задана квадратная матрица А(N,N), состоящая из 0 и 1. Найти строки, в которых подряд встречается больше трех единиц, и напечатать номера этих строк. Если таких строк нет, то напечатать об этом.
  26. Задана матрица А(N,M) и массив В(К) (К>=N), в котором в любом порядке записаны номера строк из матрицы А. Переписать в массив С строки матрицы А, номера которых заданы в массиве В. Размер матрицы С будет (K,M).
  27. Задана матрица А(N,M) и массив В(N). Задано число J (J<М). Вставить в матрицу А массив В после J-ого столбца.
  28. Задана матрица А(N,M) и массив В(M). Задано число I (I<N). Вставить массив В после I-ой строки.
  29. Задана матрица А(N,M). Диагонали в ней проведены, начиная с верхнего левого угла (т.е. на диагонали 1 находится А(0,0), на диагонали 1 – А(0,1) и А(1,0) и т.д.). Найти сумму элементов, находящихся на К-ой диагонали.
  30. Задана матрица А(N,M). Образовать массив В(N) из максимальных элементов в каждой строке.

 



<== предыдущая лекция | следующая лекция ==>
Лабораторная работа 3. Обработка одномерных массивов. | Лабораторная работа 5. Обработка строковых данных.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.234 сек.