Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Двумерные массивы
Язык СИ допускает многомерные массивы, простейшими из которых являются двумерные.
Двумерный массив int а[2][3] можно представить в виде таблицы:
A[0,0] |
A[0,1] |
A[0,2] |
A[1,0] |
A[1,1] |
A[1,2] |
Первый индекс номер строки, второй - номер столбца.
Количество байт памяти, необходимое для хранения двумерного массива в памяти определяется как:
«размер типа данных»* «число строк» * «число столбцов».
В памяти компьютера двумерный массив располагается по строкам.
При программировании важно уметь инициализировать массивы, т.е. присвоить элементам массива некоторые начальные значения. Самый простой способ инициализации указать список инициализаторов в фигурных скобках при объявлении массива:
int a[6]={1,2,3,4,5,6};
int b[2][3]={1,2,3,4,5,6};
Многомерные массивы можно инициализировать, рассматривая их как массивы массивов:
int c[2][3]={{1,2,3},{4,5,6}};
Если в определении массива явно указан его размер, то количество начальных значений не может быть больше количества элементов в массиве. Количество инициализаторов может быть меньше, чем количество элементов массива. В этом случае оставшиеся элементы массива считаются неопределенными, начальные значения получают только первые элементы массива (с наименьшими значениями индекса).
int d[6]={1,2};
В данном случае d[0] = 1, d[1]=2.
Допускается объявление и инициализация массива без явного указания его размера:
char str[]= “abcd”;
В этом случае компилятор сам определит необходимое количество элементов, включая нулевой байт. Таким образом можно объявлять массивы любого типа:
int s[]={1,2,3,4,5,6};
Следующее описание формирует «треугольную» матрицу в целочисленном массиве из 5 строк и 4 столбцов:
int x[5][4]={{1}, {2,3}, {4,5,6}, {7,8,9,10}};
При объявлении многомерных массивов с неизвестным количеством элементов, можно не указывать размер только в самых левых квадратных скобках:
int a[][3]={1,2,3,
4,5,6,
8,9,10};
Пример 1. Найти минимальный элемент и его индекс в двумерном массиве.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
int a[10][10];
int n=10, i,j, n_i, n_j, min;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
a[i][j]=rand()%10;
printf("a[%d %d]=%d ", i,j,a[i][j]);
}
printf("\n");
}
min=a[0][0];
n_i=0;
n_j=0;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(a[i][j]<min)
{
min=a[i][j];
n_i=i;
n_j=j;
}
}
}
printf("min el= a[%d][%d]=%d",n_i, n_j,a[n_i][n_j]);
getch();
}
Пример 2. Вывести на экран элементы, расположенные на главной и на побочной диагоналях.
Главной диагональю матрицы называется диагональ, проведённая из левого верхнего угла матрицы в правый нижний.
Побочной диагональю матрицы называется диагональ, проведённая из левого нижнего угла матрицы в правый верхний.
Главная диагональ |
Побочная диагональ |
A[0][0] A[1][1] A[2][2] A[3][3] Главную диагональ образуют элементы у которых индекс строки совпадает с индексом столбца |
A[0][3] A[1][2] A[2][1] A[3][0] Побочную диагональ формируют элементы с номерами A[0][n-1], A[1][n-2], A[2][n-3]… A[n-1][0] Побочную диагональ формируют элементы с номерами- A[i][n-i-1]. |
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
int a[10][10];
int n=10, i, j;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
a[i][j]=rand()%10;
printf("%d ", a[i][j]);
}
printf("\n");
}
puts("\n glavnaya diagonal");
for (i=0;i<n;i++)
{
printf("%d ", a[i][i]);
}
puts("\n pobo4naya diagonal");
for (i=0;i<n;i++)
{
printf("%d ", a[i][n-i-1]);
}
getch();
}