Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика. Базовый курс. Ч.3. Основы алгоритмизации и про- граммирования в среде Visual C++ 2005.pdf
Скачиваний:
53
Добавлен:
05.02.2023
Размер:
3.81 Mб
Скачать

58

8.ДВУМЕРНЫЕ МАССИВЫ

8.1.Понятие о двумерном массиве

Массивы могут быть и многомерными, например, двумерными. В этом случае размерности записываются в двух квадратных скобках: int d[5][4] – описан целочисленный массив из5 строк и

4 столбцов.

Напомним, что в математике двумерный массив принято называть матрицей, при этом матрица, у которой число строк равно числу столбцов называетсяквадратной. Если у квадратной матрицы

элементы

симметрично

относительно

главной диагонали равны

(а21 = а12

и т.д.), то ее

называютсимметричной. Напомним, что

главная диагональ матрицы содержит элементы с одинаковыми ин-

дексами: а11, а22

и т.д. Побочная диагональ – вторая диагональ мат-

рицы; верхний

треугольник – элементы

над главной диагональю

(включая и элементы на диагонали); нижний треугольник – элементы под главной диагональю (включая и элементы на диагонали).

В случае, когда элементы верхнего и нижнего треугольника совпадают, то говорят, что матрица симметрична.

Пример 8.1. Построить матрицу расстояний между N (N = 3) точками на плоскости, для которых заданы координаты.

Заметим, что

эта

матрица будет квадратной

и симметричной –

рас-

стояние от точки с номером i до точки с номеромj равно расстоянию от точки j до точки i. Поэтому можно облегчить процесс построения – вычислять только элементы верхнего треугольника, а элементам нижнего треугольника

просто присваивать уже вычисленные соответствующие значения. Заметим также, что элементы на главной диагонали будут равны нулю (расстояние от точки до самой себя).

59

//построение двумерного массива

#include <iostream> #include <cmath> #include <windows.h> using namespace std; int main()

{int i,j,x[3+1],y[3+1]; double a[3+1][3+1], dx,dy; char str[256],str1[256];

AnsiToOem("введи координату Х номер ",str); AnsiToOem("введи координату Y номер ",str1); for (i=1;i<=3;i++)

{cout<<str<<i<<" ";cin>>x[i]; cout<<str1<<i<<" "; cin>>y[i];};

for (i=1;i<=3;i++)

{for (j=1;j<=3;j++)

{ dx=(double)(x[i]-x[j])*(x[i]-x[j]);

dy=(double)(y[i]-y[j])*(y[i]-y[j]); a[i][j]=sqrt(dx+dy); a[j][i]=a[i][j];} };

for (i=1;i<=3;i++) {cout<<" \n";

for (j=1;j<=3;j++)

{cout<<" a["<<i<<"]["<<j<<"]="<< a[i][j];} } cout<<"\n";

return 0;}

В результате исполнения такой программы, например, получим

(рис. 8.18).

Рис. 8.18. Результат работы примера 8.1