Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
28.03.2015
Размер:
303.62 Кб
Скачать

Двумерные массивы 181

Глава 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();

}

Соседние файлы в папке файлы по информатике