Программы для обработки двумерных массивов

 

Цель работы: приобрести практические навыки в составлении про-грамм для обработки двумерных массивов.

Задание

 

1. Изучить оператор описания массивов языка Бейсик, правописание ин-дексированных переменных двумерных массивов и особенности их применения.

2. Для заданного варианта составить схему алгоритма и реализующую его программу для обработки двумерного массива.

3. Произвести на ЭВМ расчеты по разработанной программе для исходных данных, приведенных в табл. 6.1.

 

4. Получить распечатку программы и результатов расчета.

5. Оформить отчет по лабораторной работе.

 

Указания по выполнению работы

 

Алгоритмический язык Бейсик кроме одномерных массивов, рас-смотренных в лабораторной работе № 5, допускает использование двумерных массивов. Положение элемента в двумерном массиве определяется двумя номерами, или индексами массива, обозначающими номер строки и номер столбца, на пересечении которых он расположен. Для обозначения элементов двумерного массива в Бейсике служат переменные с индексами вида A(n,m), где А - имя переменной ( массива ); n,m - записываемые через запятую индексы переменной (массива) - первый индекс обозначает номер строки, второй - номер столбца . Имя переменной двумерного массива и ее индексы образуются так же , как и одномерного массива. Наибольшее допустимое значение ин-дексов двумерного массива (255,255). Например, А(3,4) - переменная дву-мерного массива, стоящая в третьей строке и четвертом столбце (нумерация строк и столбцов начинается с нуля).

 

Правила описания двумерных массивов такие же, как для одномерных. Например, при описании двух массивов оператор DIM имеет вид

 

DIM В(4,5), С(5,5)

 

где верхние границы изменения индексов записываются через запятую. Этот оператор резервирует в памяти ЭВМ места для 30 элементов массива В , со-держащего 5 строк и 6 столбцов, и 36 элементов массива С, состоящего из 6 строк и 6 столбцов.

 

Если описание двумерного массива отсутствует, то по умолчанию максимальное значение каждого из двух индексов равно 10.

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


 


Начало    
Ввод n,m,    
массива REM Программа транспонирования матрицы  
A(n,m)  
  DIM А(20,20),В(20,20)  
  REM Ввод матрицы А  
Вывод PRINT “Введите число строк N=”;  
массива INPUT N  
A(n,m)  
  PRINT “Введите число столбцов М=”;  
  INPUT М  
i=1 FOR 1=1 ТО N  
PRINT “Введите “;I;”-ю строку”  
  FOR J=1 ТО М  
  INPUT A(I,J)  
  NEXT J  
j=1 NEXT I  
  REM Контрольный вывод матрицы A  
  PRINT ”Матрица A”  
  FOR 1=1 TO N  
bij=aji FOR J=1 TO M  
PRINT A(I,J);  
  NEXT J  
  PRINT  
Вывод NEXT I  
bij PRINT “Транспонированная матрица B”  
  FOR I=1 TO M  
  FOR J=1 TO N  
j=j+1 B(I,J)=A(J,I)  
PRINT B(I,J);  
  NEXT J  
  PRINT  
Да NEXT I  
END  
j<=m  
  6)  
i=i+1    
i<=n    
Конец а)  
   
Рис.6.1. Пример программирования алгоритма транспонирования матрицы:  
а - схема алгоритма; б - его программная реализация.  

 


В качестве примера на рис.6.1 приведены алгоритм и программа полу-чения транспонированной матрицы В из матрицы А размером n x m. Транс-понирование матрицы заключается в замене ее строк столбцами, а столбцов - строками.

 

Программа составлена в общем виде и может использоваться для мат-риц размером 20x20, который задан оператором DIM. Размеры обрабатывае-мой матрицы А вводятся в переменные N и М.

 

Операторы первого двойного цикла обеспечивают поэлементный ввод матрицы А по строкам. При этом оператор INPUT , являясь телом внутреннего цикла, выполняется (n х m) раз (по числу элементов матрицы) и при каждом его выполнении значение элемента матрицы , вводится с клавиатуры. Опе-ратор PRINT входит в тело внешнего цикла и выводит на дисплей запрос, идентифицирующий номер вводимой строки.

 

Операторы второго двойного цикла осуществляют контрольный вывод матрицы А после ввода ее элементов, оператор PRINT, являясь телом внут-реннего цикла, выполняется (n х m) раз и выводит построчно элементы мат-рицы А в плотном формате. После вывода строки матрицы и выхода из внут-реннего цикла оператор PRINT без списка вывода осуществляет возврат ка-ретки, чем обеспечивается вывод новой строки матрицы с новой строки эк-рана дисплея.

 

Вычисление элементов транспонированной матрицы В и их построчный вывод совмещены в целях сокращения программы в третьем двойном цикле Таблица 6.1

 

Варианта заданий к лабораторной работе № 6

 

№п. Составить программу обработки двумерного Исходные  
п массива А размером n х m   данные    
n   m   k  
         
     
1. Вычислить сумму всех элементов     -  
2. Вычислить произведение всех элементов     -  
3. Вычислить сумму диагональных элементов     -  
4. Вычислить сумму и произведение элементов k-й      
  строки            
5. Вычислить сумму и произведение элементов k-го      
  столбца            
6. Сложить k-ю и (k+1)-ю строки и сформировать новый      
  массив размером (n-1) х m            
7. Сложить k-й и (k-1)-й столбцы и сформировать новый      
  массив размером n х (m-1)            
8. Сложить элементы всех строк и сформировать од-     -  
  номерный массив размером n            
9. Удалить k-ю строку и сформировать новый массив      
  размером (n-1) х m            

 


               
10. Удалить k-й столбец и сформировать новый массив      
  размером n х (m-1)              
11. Переставить местами k-ю и (k+1)-ю строки и сфор-      
  мировать новый массив            
12. Переставить местами k-й и (k-1)-й столбцы и сфор-      
  мировать новый массив            
13. Определить минимальный элемент, его номер строки     -  
  и столбца                
14. Определить максимальный элемент, его номер     -  
  строки и столбца              
15. Определить минимальный и максимальный эле-      
  менты k-й строки              
16. Определить минимальный и максимальный эле-      
  менты k-го столбца            
17. Умножить k-ю строку и (k+1)-й столбец на число k      
18. Разделить k-ю строку и (k-1)-й столбец на число k      
19. Умножить все элементы массива на число k     4,86  
20. Разделить все элементы массива на число k     7,35  
  Из двух двумерных массивов A и B размером n х m     Исходные  
№п.п   данные  
  сформировать массив С элементы которого равны:            
    n   m  
                   
21. cij = aij +bij ,i=1,…,n, j =1, …, m        
22. cij = aij bij ,i=1,…,n, j =1, …, m        
23. cij = aij bij , i =1,…, n , j =1, …, m        
24. cij = aij / bij , i =1, …, n , j =1, …, m        
25. cij = aij 1/ bij ,i=1,…,n,j=1,…,m        
26. cij = 1 aij bij ,i=1,…,n,j=1,…,m        
27. cij = aij 2bij , i =1, …, n , j =1, …, m        
28. cij = bij 1/ aij ,i=1,…,n,j=1,…,m        
29. cij = aij +bij /10 , i =1, …, n , j =1, …, m        
30. Найти матрицу C, равную произведению матриц A и        
  B одного размера n x m            

 


Библиографический список

 

1. В.А. Аллилуев, Е.Д.Березкин, А.В. Тютин Основы программиро-вания на языке QBasic. Новочеркасск, 2000 г. С.207.