Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



ТЕОРЕТИЧНА ЧАСТИНА

 

В багатьох випадках інформація може бути представлена більш компактно, чітко та зрозуміло, якщо для її представлення використовується більше, ніж один просторивий вимір.

У мові С визначені тільки одновимірні масиви, але оскільки елементом масиву може бути масив, можна визначити і багатовимірні масиви. Вони формалізуються списком константних – виразів, що слідують за ідентифікатором масиву, причому кожен константний - вираз розташовано у своїх квадратних дужках.

Кожен константний - вираз в квадратних дужках визначає число елементів по даному вимірі масиву, так що оголошення двомірного масиву містить два константних - вирази, тривимірного - три і т.д.

Приклад:

int a[2][3];/* представлено у вигляді матриці a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]*/

Двовимірний масив – це масив одновимірних масивів.

Двовимірний масив int a[3] [4] можна представити у виді таблички:

Перший індекс

a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
a[2][0] a[2][1] a[2][2] a[2][3]

 

Другий індекс

 

Перший індекс – номер рядка, другий індекс – номер стовпця. Кількість байт пам'яті, який необхідно для збереження масиву, обчислюється по формулі:

Кількість байт=(розмір типу даних)*(кількість рядків)*(кількість стовпців).

У пам'яті комп'ютера масив розташовується по рядках.

Найпростіший спосіб ініціалізації двовимірних масивів наступний: у процесі оголошення масиву вказати у фігурних дужках список ініціалізаторів:

int a[3][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

В іншому випадку така форма запису еквівалентна наборові операторів:

a[0][0]=1; a[0][1]=2; a[0][2]=3; a[0][3]=4;
a[0][4]=5; a[1][0]=6; a[1][1]=7; a[1][2]=8;

Багатовимірні масиви, у тому числі і двовимірні масиви, можна ініціалізувати, розглядаючи як масив масивів.

Ініціалізації

int a[3][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

і

int a[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};

еквівалентні. Кількість ініціалізаторів не зобов'язана збігатися з кількістю елементів масиву. Якщо ініціалізаторів менше, то значення елементів масиву, що залишилися, не визначені.

При оголошенні масивів з невідомою кількістю елементів можна не вказувати розмір тільки в самих лівих квадратних дужках:

int arr[][3]={1,2,3,

5,6,7,

8,9,0};

Приклад 1.Нехай треба ввести з клавіатури масив A (N,M).

Перша частина програми забезпечує ввід елементів порядково. Зовнішній цикл змінює індекс рядка, внутрішній змінює індекс стовпчика (рис. 8.1).

A(0,0), A(0,1),..., A(0,M),

A(1,0), A(1,1),..., A(1,M),

A(2,0), A(2,1),..., A(2,M),

...

 

Рис. 8.1. Блок-схема алгоритму до прикладу 1

 

#include<stdio.h>

main()

{

float a[100][100];

int n,m,i,j;

printf(“Введіть кількість рядків n та стовпчиків m масиву”);

scanf(“%d%d”’&n’&m);

/*Ввід масиву*/

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

{

for(j=0;j<m;j++) scanf(“%g”,&a[i][j]);

}

/*Вивід елементів масиву для візуального контролю*/

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

{

for(j=0;j<m;j++) printf(“%g”,&a[i][j]);

printf(“\n”);

}

}

Приклад 2.Задано двовимірний масив A (10,20). Знайти середнє арифметичне його додатних елементів.

#include<stdio.h>

main()

{

float a[1000][1000];

int n,m,i,j,kol;

float s, sar;

printf(“Введіть кількість рядків n та стовпчиків m масиву”);

scanf(“%d%d”’&n’&m);

/*Ввід масиву*/

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

{

for(j=0;j<m;j++) scanf(“%g”,&a[i][j]);

}

/*Вивід елементів масиву для візуального контролю*/

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

{

for(j=0;j<m;j++) printf(“%g”,a[i][j]);

printf(“\n”);

}

s=0;kol=0;

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

{

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

{

if(a[i][j]>0){s+=a[i][j];kol++;}

}

}

if(kol!=0)sar=s/kol;

else printf(“\n””Додатних елементів в матриці немає”);

}

 

Приклад 3. Задано двовимірний масив A(N,M). Знайти добуток його елементів.

#include<stdio.h>

main()

{

float a[100][100];

int n,m,i,j;

float p;

printf(“Введіть кількість рядків n та стовпчиків m масиву”);

scanf(“%d%d”,&n,&m);

/*Ввід масиву*/

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

{

for(j=0;j<m;j++) scanf(“%g”,&a[i][j]);

}

/*Вивід елементів масиву для візуального контролю*/

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

{

for(j=0;j<m;j++) printf(“%g”,a[i][j]);

printf(“\n”);

}

p=1;

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

{

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

{

p*=a[i][j];

}

}

printf(“\n””p=%g”,p);

}

Якщо хоча б один елемент у масиві A(N,M) дорівнює нулю, то добуток буде дорівнювати нулю. Якщо в добуток повинні входити тільки ненульові елементи, то необхідно враховувати цю умову.

В подальшому домовимося називати двовимірний масив матрицею та не виводити його після початкового вводу на візуальний контроль для економії місця та часу.

Приклад 4.Задана матриця B(N,M), де N>5, M>10. Знайти кількість парних елементів, що розташовані вище 4-го рядка та правіше 5-го стовпчика.

#include<stdio.h>

main()

{

float b[1000][1000];

int n,m,i,j,kol;

printf(“Введіть кількість рядків n та стовпчиків m масиву”);

scanf(“%d%d”,&n,&m);

/*Ввід масиву*/

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

{

for(j=0;j<m;j++) scanf(“%g”,&b[i][j]);

}

kol=0;

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

{

for(j=5;j<m;j++)

{

if(b[i][j]%2==0){kol++;}

}

}

printf(“\n””Кількість додатніх %d”, kol);

}




Переглядів: 652

<== попередня сторінка | наступна сторінка ==>
Лабораторна робота № 8 | 

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.015 сек.