Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник 357.docx
Скачиваний:
27
Добавлен:
30.04.2022
Размер:
1.75 Mб
Скачать

16.3 Примеры работы со статическим многомерным массивом

Пример 1. Ввод и вывод элементов двухмерного массива

int a [50][50];

int i, j, n, m;

printf("Введите количество строк: ");

scanf("%d", &n);

printf("Введите количество столбцов: ");

scanf("%d", &m);

if(!(n<50) || !(m<50)) return;

// Ввод элементов массива

for(i=0; i<n; i++) // цикл по строкам

{

for(j=0; j<m; j++) {// цикл по столбцам

printf(" a[%d][%d] = ",i,j);

scanf("\n%d", &a[i][j]);

}

}

// Вывод элементов массива

for(int i=0; i<n; i++) // цикл по строкам

{

for(int j=0; j<m; j++) // цикл по столбцам

{

printf("a[%d][%d] = %d", i,j,a[i][j]); //

}

printf("\n");

}

Пример 2. Заполнение элементов двухмерного массива случайными числами и вывод на экран

int a [50][50];

int i, j, n, m;

srand(time(NULL)|clock());

printf("Введите количество строк: ");

scanf("%d", &n);

printf("Введите количество столбцов: ");

scanf("%d", &m);

// Ввод элементов массива

for(i=0; i<n; i++) // цикл по строкам

{

for(j=0; j<m; j++) {// цикл по столбцам

a[i][j]=-30+rand()%101;

} }

// Вывод элементов массива

for(int i=0; i<n; i++) // цикл по строкам

{

for(int j=0; j<m; j++) // цикл по столбцам

{

printf("a[%d][%d] = %d", i,j,a[i][j]); //

}

printf("\n");

}

Пример 3. Функция заполнение элементов двухмерного массива в стиле «шахматная доска»

void printchessboard(int size)

/* size – размер доски*/

{

int chessboard[80][80];

int x, y;

for(x = 0;x<size;x++){

for(y = 0;y<size;y++){

chessboard[x][y] = abs((x-y)%2);

printf("%c",chessboard[x][y]?'#':'O');

}

printf("\n");

}

}

Пример 4. Функция поиска минимального элемента в трехмерном массиве.

Трехмерный массив int arr[L][M][N] состоит из L двухмерных массивов размерностью M на N, располагающихся по порядку:

Первый массив M на N

Второй массив M на N

Третий массив M на N

arr

arr+(M*N)

arr+2*(M*N)

Начальный адрес

Каждый двухмерный массив M на N располагается по M строкам, содержащим одномерный массив из N элементов. Поэтому обращение к k-элементу j-й строки i-го массива M на N вычисляется как:

arr+i*(M*N)+j*N+k

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

struct INDEX {

int i, j, k;} index

struct INDEX * find(int *prt, int L, int M, int N)

{

int min;

int i, j, k, ind;

min=*ptr;

index.i=index.j=index.k=0;

for(i=0;i<L; i++)

for(j=0;j<M; j++)

for(k=0;k<N; k++)

{

ind=i*(M*N)+j*N+k;

if(min>*(ptr+ind))

{

min=*(ptr=ind);

index.i=i;

index.j=j;

index.k=k;

}

}

return &index;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]