<тип> name [n][m];
где: n – количество строк в массиве, целое число.
m – количество элементов в строке массива, целое число.
Например
int b[5][6], q[10][15];
float y[7][5];
Обращение к элементу матрицы выполняется через индексы элементов.
a[0][0] a[1][2] a[i][j] a[9][3]
y[0][0] y[0][1]... y[5][7]
В памяти многомерные массивы располагаются линейно так, что в первую очередь меняется крайний правый индекс, затем индекс слева и т.д.
Начальные индексы у элементов многомерных массивов равны 0.
Индексы для элементов массива d[3][4]:
d[0][0] d[0][1] d[0][2] d[0][3]
d[1][0] d[1][1] d[1][2] d[1][3]
d[2][0] d[2][1] d[2][2] d[2][3]
4.4.2 Инициализация многомерных массивов:
int t[3][4] = { {2, 7, -1, -10},
{5, 12, 18, -3},
{11, -8, 25, 4} };
Для работы с многомерными массивами чаще всего используются сложные циклы for. Количество операторов цикла for равна размерности массива. Параметрами этих циклов является индексы элементов массива.
4.4.3 Ввод значений элементов матрицы
• С помощью клавиатуры
for(i=0; i<n; i++)
for(j=0; j<m; j++)
scanf(“%d”, &a[i][j]);
• С помощью датчика случайных чисел
for(i=0; i<n; i++)
for(j=0; j<m; j++)
a[i][j]= 10+0.001*rand();
4.4.4 Вывод элементов матрицы на печать
for(i=0; i<n; i++)
{
printf(“\n”);
for(j=0; j<m; j++)
printf(“ %6.2f ”, a[i][j]);
}
Пример 4.4. Задана матрица действительных чисел, размером 10х9. Найти сумму всех отрицательных элементов. Результат – простая переменная

Int main()
{
float a[10][9], s;
int i,j;
for (i=0;i<10;i++)
{
printf("\n");
for (j=0; j<9; j++)
{
a[i][j]=-5+0.001*rand();
printf("%6.1f",a[i][j]);
}
}
s=0;
for (i=0; i<10; i++)
for(j=0; j<9; j++)
if(a[i][j]<0) s=s+a[i][j];
printf("\n сумма= %6.2f",s);
return 0;
}
Пример 4.5. Задан массив A размером 10х9. Найти суммы положительных элементов в каждой строке. Результат - одномерный массив.

Текст програми
void main()
{
float a[10][9], s[10];
int i,j;
for (i=0;i<10;i++)
{
printf("\n");
for (j=0; j<9; j++)
{
a[i][j]=-5+0.001*rand();
printf("%6.1f",a[i][j]);
}
}
printf("\n");
printf("\n");
for (i=0; i<10; i++)
{
s[i]=0;
for(j=0; j<9; j++)
if(a[i][j]>0) s[i]=s[i]+a[i][j];
}
for(i=0; i<10; i++)
printf(" %5.0f",s[i]);
}
Приклад 4.6. В матрице размером 8х8 найти значение и положение максимального элемента, лежащего выше главной диагонали

Текст програми
void main()
{
float a[8][8],max;
int i,j,nstr,nstb;
for (i=0;i<10;i++)
{
printf("\n");
for (j=0; j<9; j++)
{
a[i][j]=-5+0.001*rand();
printf("%6.1f",a[i][j]);
}
}
printf("\n");
max=-1000;
for (i=0; i<10; i++)
{
for(j=i+1; j<9; j++)
if(a[i][j]>max){max=a[i][j];nstr=i; nstb=j;}
}
printf("%d %d %5.1f",nstr, nstb, max);
}






