
Двумерные
массивы
Глава 4 Двумерные массивы
Кроме одномерных массивов, в практических задачах часто используются и двумерные массивы. Двумерный массив представляет собой таблицу из однотипных элементов, организованную по строкам и столбцам. Элемент такого массива записывается так: A[I][J], где первый индекс I представляет собой номер строки, а второй индекс J является номером столбца. Местоположение каждого элемента массива в памяти компьютера определяется этими индексами.
В языке С/С++ используется следующее описание двумерного массива:
Тип_элементов Имя_массива[число строк][число столбцов];
Описание вполне аналогичное описанию одномерного массива.
Нахождение суммы элементов массива
Исходная ситуация традиционна для работы с двумерными массивами: дан массив A[I,J], где индексы I, J принимают значения от 1 до N. В данном случае будем считать элементы массива целыми числами (имеющими тип int). Сумма элементов двумерного массива вычисляется по следующей формуле:
.
(4.1)
Алгоритм вычисления S по соотношению (4.1) достаточно простой и программа, его реализующая, не требует пояснения с использованием блок-схемы (как и ряд других программ, рассматриваемых в примерах этой главы). В листинге 4.1 приведена реализация решения данной задачи. Для определенности мы установили размерность массива: 10 строк и 10 столбцов. Как и в разработках предыдущих глав, в данной программе обеспечено первоначальное заполнение элементов массива с помощью датчика случайных чисел.
Листинг 4.1. Вычисление суммы значений элементов двумерного массива
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
#define N 10
#define NM 11
void main()
{
int A[NM][NM];
int J,I,S;
for (I=1;I<=N; I++)
for (J=1;J<=N; J++)
A[I][J]=rand()%100;
S=0;
for (I=1;I<=N; I++)
for (J=1;J<=N; J++)
S= S + A[I][J];
cout<<"Сумма элементов двумерного массива="<<S;
_getch();
}
Сумма элементов с заданными свойствами
Несколько изменим формулировку предыдущего задания. Будем считать, что требуется просуммировать только те элементы, значения которых являются нечетными числами, а кроме того, эти значения должны располагаться в интервале от 10 до 100. В листинге 4.2 приведена программа, реализующая решение данной задачи.
Листинг 4.2. Вычисление суммы значений элементов массива при условии
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
#define N 10
#define NM 11
void main()
{
int A[NM][NM];
int J,I,S;
for (I=1;I<=N; I++)
for (J=1;J<=N; J++)
A[I][J]=rand()%100;
S=0;
for (I=1;I<=N; I++)
for (J=1;J<=N; J++)
if(((A[I][J]%2)==1)&&(A[I][J]>=10)&&(A[I][J]<=100))
S= S + A[I][J];
cout<<"Сумма элементов двумерного массива="<<S;
_getch();
}
Расчет среднего арифметического
В данном случае нам требуется вычислить среднее арифметическое значение только положительных значений элементов двумерного массива. В листинге 4.3 приведена программа, реализующая решение данной задачи. Здесь мы использовали две переменные:
-
S — для суммы интересующих нас элементов;
-
M — количество элементов, по которым подсчитывается сумма.
Листинг 4.3. Вычисление среднего арифметического
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
#define N 10
#define NM 11
void main()
{
int A[NM][NM];
int J,I,M;
float S;
for (I=1;I<=N; I++)
for (J=1;J<=N; J++)
A[I][J]=rand()%100;
S=0;
M=0;
for (I=1;I<=N; I++)
for (J=1;J<=N; J++)
if (A[I][J]>0)
{ S= S + A[I][J];
M=M+1;}
S=S/M;
cout<<"'Среднее арифметическое равно "<<S;
_getch();
}