Студопедия
Контакти
 


Тлумачний словник

Реклама: Настойка восковой моли




Авто | Автоматизація | Архітектура | Астрономія | Аудит | Біологія | Будівництво | Бухгалтерія | Винахідництво | Виробництво | Військова справа | Генетика | Географія | Геологія | Господарство | Держава | Дім | Екологія | Економетрика | Економіка | Електроніка | Журналістика та ЗМІ | Зв'язок | Іноземні мови | Інформатика | Історія | Комп'ютери | Креслення | Кулінарія | Культура | Лексикологія | Література | Логіка | Маркетинг | Математика | Машинобудування | Медицина | Менеджмент | Метали і Зварювання | Механіка | Мистецтво | Музика | Населення | Освіта | Охорона безпеки життя | Охорона Праці | Педагогіка | Політика | Право | Програмування | Промисловість | Психологія | Радіо | Регилия | Соціологія | Спорт | Стандартизація | Технології | Торгівля | Туризм | Фізика | Фізіологія | Філософія | Фінанси | Хімія | Юриспунденкция

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

Загрузка...

 

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

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

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

Приклад:

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);

}

Загрузка...



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

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


 

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


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