|
Примеры решения задач с двумерными массивами Задача 1: Найти произведение ненулевых элементов матрицы. Решение: Для решения данной задачи нам потребуются переменные: матрица, состоящая, например, из целочисленных элементов; P – произведение элементов, отличных от 0; I , J – индексы массива; N , M – количество строк и столбцов в матрице. Входными данными являются N , M – их значения введем с клавиатуры; матрица – ввод матрицы оформим в виде процедуры, заполнение матрицы осуществим случайным образом, т.е. с помощью функции random (). Выходными данными будет являться значение переменной P (произведение). Чтобы проверить правильность выполнения программы, необходимо вывести матрицу на экран, для этого оформим процедуру вывода матрицы. Ход решения задачи: 1) обсудим сначала выполнение основной программы, реализацию процедур обговорим чуть позже: 2) введем значения N и M; 3) введем двумерный массив; 4) выведем полученную матрицу; 5) присвоим начальное значение переменной P =1; 6) выполним последовательный перебор всех строк i от 1-й до N-й, в каждой строке будем перебирать все столбцы j от 1-го до M-го, для каждого элемента матрицы будем проверять условие: если a [i,j]<>0, то произведение P будем домножать на элемент a[i,j] ( P := P * a[i,j]); 7) выведем на экран значение произведения ненулевых элементов матрицы – P . var a:array[1..100,1..100]of integer; i,j,m,n,P:integer; begin writeln('vvedi razmer matrizi'); read(n,m); randomize; for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(100);write(a[i,j]:5:1);end; writeln; end; P:=1; for i:=1 to n do for j:=1 to m do if a[I,j]<>0 then P:=P*a[i,j]; write(‘P=’,P); end. Задача 2: Вычислите среднее арифметическое значение элементов двухмерного массива А(nхm), больших заданного числа Q.
Решение: var a:array[1..100,1..100]of real; Q,x:real; i,j,m,n,k:integer; begin writeln('vvedi razmer matrizi'); read(n,m); writeln('vvedi Q’); read(Q); randomize; for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(100)+random; write(a[i,j]:5:1);end; writeln; end; x:=0;k:=0; for i:=1 to n do for j:=1 to m do if a[i,j]>Q then begin x:= x+a[i,j];k:=k+1; end; x:=x/k; write(‘srednee arifm = ‘,x:10:3); end. Задача 3: Задан двухмерный массив вещественных чисел. Найдите номер строки и номер столбца, в которых находится наименьший элемент. Решение: var a:array[1..100,1..100]of real; min:real; i,j,m,n,k,l:integer; begin writeln('vvedi razmer matrizi'); read(n,m); randomize; for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(100)+random; write(a[i,j]:5:1);end; writeln; end; min:=a[1,1];k:=1;l:=1; for i:=1 to n do for j:=1 to m do if a[i,j]< min then begin min:= a[i,j];k:=i;l:=j end; write(‘nomer stroki = ‘,k,’ nomer stolbza=’,l); end. |
Обратная связьЗадачи для самостоятельной работы: 1. В массиве записаны целые числа. Вычислить: а) произведение элементов побочной диагонали массива, меньших 10; б) сумму элементов главной диагонали массива, оканчивающихся цифрой 7; в) количество нулевых элементов главной диагонали массива; г) число нечетных элементов побочной диагонали массива. 2. Определите максимальный по модулю элемент матрицы А(n,n) и его индексы. 3. Определите в матрице А(7, 7) наибольший из положительных элементов. 4. Дана действительная матрица А(7, 8). Найдите среднее арифметическое наибольшего и наименьшего ее значений. 5. Определите наименьший элемент каждой четной строки матрицы А(n,n). 6. Определите номера строк матрицы А(n,n), хотя бы один элемент которых равен заданному числу В. 7. Определить: а) минимальный элемент главной диагонали массива; б) максимальный элемент побочной диагонали массива. 8. В двухмерном массиве из n строк и n столбцов, где n- нечетное число, все элементы различны. Наибольший элемент среди стоящих на главной и побочной диагоналях поменять местами с элементом, стоящим на пересечении этих диагоналей. 9. Составить программу: а) которая определяет, есть ли хотя бы один элемент, равный заданному числу, на главной диагонали массива; б) которая определяет, есть ли хотя бы один элемент, равный заданному числу, на побочной диагонали массива. |