You are on page 1of 7

ІНСТРУКЦІЯ ДО ЛАБОРАТОРНОЇ РОБОТИ № 5

РОБОТА З ДВОВИМІРНИМИ МАСИВАМ

Мета роботи – вивчити синтаксис опису і використання у програмах


змінних типу двовимірних масивів.
1. ОСНОВНІ ТЕОРЕТИЧНІ ВІДОМОСТІ

Оголошення двовимірних (багатовимірних) масивів


Протягом обробки різних даних часто виникає ситуація, коли потрібно
використати двовимірний, або багатовимірний масив.
Синтаксис оголошення багатовимірного масиву:

<тип> <назва_масиву> [<кількість_елементів_1>]


[<кількість_елементів_2>]…[<кількість_елементів_N>];

Наприклад, потрібно зберігати і обробляти інформацію про кількість


годин, які відпрацювали викладачі кафедри протягом п’яти місяців навчального
року. Тоді прізвище викладача буде визначати одну розмірність масиву, а номер
місяця – другу. Приклад заповнення значень відпрацьованих годин викладачами
наведено у таблиці 1.

Таблиця 1

Приклад даних, які доцільно подати у вигляді двовимірного масиву

вересень жовтень листопад грудень січень


Василенко 52 54 38 48 6
Комаров 50 50 48 50 18
Петришин 26 30 28 18 4

У даному випадку потрібно оголосити масив цілих чисел розміру 3 х 5. Цей


масив можна ініціалізувати, використавши фігурні дужки:

int hours[3][5] = {{52,54,38,48,6},{50,50,48,50,18},{26,30,28,18,4}};

При обробці елементів масиву їх початкові значення будуть такі:


hours [0][0]=52, hours [0][1]=54, hours [0][2]=38, hours [0][3]=48, hours [0][4]=6,
hours [1][0]=50, hours [1][1]=50, hours [1][2]=48, hours [1][3]=50, hours [1][4]=6,
hours [2][0]=26, hours [2][1]=30, hours [2][2]=28, hours [2][3]=18, hours [2][4]=4

Елементи двовимірних масивів найзручніше обробляти за допомогою


операторів циклу.
Оголошувати і працювати з масивами зручно, використовуючи тип за
замовчуванням. Досить часто тип за замовчуванням використовується під час
роботи з підпрограмами-функціями.
Синтаксис визначення типу за замовчуванням

typedef <тип> <назва_типу> [<кількість_елементів>];

Тоді в програмному коді для оголошення змінної використовується назва


типу

<назва_типу> <назва_змінної>;

Наприклад,

typedef double array[10];


array m1,m2;

Приклади
Приклад 1.
Задано двовимірний масив. Скласти програму, яка визначає
максимальне з двох чисел: суми елементів k-ого рядка і суми елементів s-
ого стовпця масиву.

#include <stdio.h>
#include <windows.h>

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int ms[4][3];
int i, j, k, s, s_k, s_s;
// введення елементів масиву
printf("Введіть елементи масиву\n");
for (i = 0; i < 4; i++)
for (j = 0; j < 3; j++)
{
printf("ms[%d][%d]", i, j);
scanf("%d ", &ms[i][j]);
}

printf("Введіть номер рядка\n");


scanf("%d", &k);
printf("Введіть номер стовпця\n");
scanf("%d", &s);

//Обчислення суми елеменів k-го рядка


s_k = 0;
for (i = 0; i < 4; i++) s_k = s_k + ms[k][i];
//Обчислення суми елеменів s-го стовпця
s_s = 0;
for (i = 0; i < 3; i++) s_s = s_s + ms[i][s];

if (s_k < s_s) printf("Сума у рядочку менша");


else
if (s_k > s_s)
printf("Сума у рядочку більша");
else
printf("Суми однакові");

return 0;
}

Приклад 2
Задано двовимірний масив цілих чисел. У кожному його стовпці знайти
кількість додатних чисел.

#include <stdio.h>
#include <time.h>
#include <windows.h>

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int A[5][6];
int i, j, k;

// Присвоєння елементам масиву рандомних значень з діапазоні


// від -20 до 20 та їх видрук
printf("Масив: \n");
for (i = 0; i < 5; i++)
{
for (j = 0; j < 6; j++)
{
A[i][j] = -20 + rand() % 41;
printf("%4d ", A[i][j]);
}
printf("\n");
}

//Обчислення кількості додатних елементів у кожному стовпчику


printf("Кількість додатніх елементів:\n");
for (j = 0; j < 6; j++)
{
k = 0;
for (i = 0; i < 5; i++)
if (A[i][j] > 0) k = k + 1;
printf("У %d стовпці %d\n", j, k);

return 0;
}
Рис. 1. Результат виконання програми

Приклад 3.
Заповнити двовимірний масив так, як показано на рисунку.

Рис. 2. Схема заповнення масиву


1 спосіб

#include <stdio.h>
#include <time.h>
#include <windows.h>

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int m[10][12] = {}, i, j, el;

el = 1;
for (i = 0; i < 10; i++)
if (i%2==0)
for (j = 0; j < 12; j++)
{
m[i][j] = el;
el = el + 1;
}
else
for (j =11; j >=0; j--)
{
m[i][j] = el;
el = el + 1;
}

//Видрук заповненого масиву


for (i = 0; i < 10; i++)
{
for (j = 0; j < 12; j++)
printf("%4d ", m[i][j]);
printf("\n");
}

return 0;
}

2 спосіб

#include <stdio.h>
#include <time.h>
#include <windows.h>

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int m[10][12] = {}, i, j, el;

el = 1;
for (i = 0; i < 10; i += 2)
for (j = 0; j < 12; j++)
{
m[i][j] = 12 * i + j + 1;
m[i+1][j ] = 12 * (i + 2) - j;
}

//Видрук заповненого масиву


for (i = 0; i < 10; i++)
{
for (j = 0; j < 12; j++)
printf("%4d ", m[i][j]);
printf("\n");
}

return 0;
}

Рис. 3. Результат виконання програми

You might also like