Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Си к экзамену.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1 Мб
Скачать
☆

Работа с двумерными массивами

Объявление двумерного массива выглядит так:

тип имя_массива[количество_строк][количество_столбцов];

тип имя_массива[количество_элементов n][количество_элементов m] =

{ {значение_элем._00, значение_ элем._0_1, … значение_ элем._0_m-1},

{значение_ элем._1_0, значение_ элем._1_1, … значение_ элем._1_m-1},

…

{значение_ элем._n-1_0, значение_ элем._n-1_1, … значение_ элем._n-1_m-1} };

Пример. Объявление двумерного массива

int mas1[10][15];

int a[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, {7, 8 ,9} };

Для перебора всех элементов массива необходимо организовать цикл.

Пример. Подсчет суммы и среднего арифметического элементов двумерного массива

#include <stdio.h>

#include <stdlib.h>

#define N 4

#define M 3

void main()

{

int mas[N][M] = {{10, 2, 15, 7}, {14, 3, 11, 6}, {19, 0, 14, 13}};

int sum=0, i, j;

float sr;

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

{

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

{

sum+=mas[i][j];

}

}

printf("Summa = %d\n", sum); //вывод результата, равного 32

sr=(float)sum/(N*M); // приведение суммы к вещественному типу и

//подсчет среднего арифметического

printf("Srednee = %6.3f", sr); //вывод результата, равного 8.500

}

Пример. Заполнение и вывод двумерного массива

#include <stdio.h>

#include <stdlib.h>

#define N 5

#define M 4

int main()

{

int mas[N][M];

int i,j=0;

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

{

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

{

mas[i][j] = i+j; //заполнение массива значениями i+j

}

}

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

{

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

{

printf("%d", mas[i][j]); //вывод элементов массива

}

printf("\n");

}

}

Пример. Поиск максимального элемента и его индексов в двумерном массиве

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define N 8

#define M 10

void main()

{

srand(time(0));

int mas1[N][M];

int Max, i,j, indi, indj;

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

{

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

{

mas1[i][j] = 15+rand()%30; //заполнение массива значениями от 15 до 44

}

}

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

{

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

{

printf("%3d", mas1[i][j]); //вывод элементов массива

}

printf("\n");

}

Max=mas1[0][0]; //задание переменной Max начального значения

indi=0; //задание переменной indi начального значения

indj=0; //задание переменной indj начального значения

//поиск максимального элемента

for (i=1; i<N; i++) //перебор по строкам

{

for (j=0; j<M; j++) //перебор по столбцам

{

if (mas1[i][j]>Max) //если встретившийся элемент массива больше

//текущего значения переменной Max

{

Max=mas1[i][j]; //занесение в переменную Max значения элемента массива

indi=i; //запоминание номера строки, содержащей максимальный элемент

indj=j; //запоминание номера столбца, содержащего максимальный элемент

}

}

}

printf("Max = mas[%d][%d] = %d\n", indi, indj, Max); //вывод значения максимального

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

}

Пример. Поиск минимальных элементов в столбцах двумерного массива

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define N 8

#define M 10

void main()

{

srand(time(0));

int mas1[N][M];

int Min, i,j;

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

{

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

{

mas1[i][j] = 15+rand()%30; //заполнение массива значениями от 15 до 44

}

}

for (i=0; i<N; i++) //перебор по строкам

{

for (j=0; j<M; j++) //перебор по столбцам

{

printf("%3d", mas1[i][j]); //вывод элементов массива

}

printf("\n");

}

//поиск минимальных элементов в столбцах

for (j=0; j<M; j++) //перебор по столбцам

{

Min=mas1[0][j]; //задание переменной Min начального значения

for (i=1; i<N; i++) //перебор по строкам

{

if (mas1[i][j]<Min)

{

Min=mas1[i][j];

}

}

printf("V stolbce %d Min = %d\n", j,Min); //вывод значений минимальных

//элементов в столбцах

}

}

Пример. Блок-схема алгоритма подсчета минимальных элементов в столбцах

Код:

//поиск минимальных элементов в столбцах

for (j=0; j<M; j++) //перебор по столбцам

{

Min=mas1[0][j]; //задание переменной Min начального значения

for (i=1; i<N; i++) //перебор по строкам

{

if (mas1[i][j]<Min)

{

Min=mas1[i][j];

}

}

printf("V stolbce %d Min = %d\n", j,Min); //вывод значений минимальных

//элементов в столбцах

}

Блок-схема: