Читайте также: |
|
В багатьох випадках інформація може бути представлена більш компактно, чітко та зрозуміло, якщо для її представлення використовується більше, ніж один просторивий вимір.
У мові С визначені тільки одновимірні масиви, але оскільки елементом масиву може бути масив, можна визначити і багатовимірні масиви. Вони формалізуються списком константних – виразів, що слідують за ідентифікатором масиву, причому кожен константний - вираз розташовано у своїх квадратних дужках.
Кожен константний - вираз в квадратних дужках визначає число елементів по даному вимірі масиву, так що оголошення двомірного масиву містить два константних - вирази, тривимірного - три і т.д.
Приклад:
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);
}
Дата добавления: 2015-07-20; просмотров: 106 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
ВАРІАНТИ ЗАВДАНЬ РОБОТИ | | | У двовимірні та навпаки |