- •Двовимірні масиви
- •План:
- •Двовимірні масиви. Визначення
- •Багатовимірні масиви. Визначення
- •де, m - кількість рядків двовимірного масиву; n - кількість стовпців двовимірного масиву;
- •Тривимірні масиви. Визначення
- •У оголошенні двовимірного масиву, також як і в оголошенні одновимірного масиву, насамперед, потрібно
- •1// ініціалізація двовимірного масива:
- •Двовимірні масиви. Ініціалізація
- •Характерним об'єктом програмування є двовимірні масиви (матриці). Часто розглядаються матриці спеціального вигляду –
- •Матриця є прямокутна таблиця чисел з n рядків і m стовпців.
- •Індекси i і j елементу однозначно визначають місце
- •Головною діагоналлю квадратної матриці порядку n називають безліч елементів a11, а 22, ...,
- •Запам'ятаємо деякі властивості квадратних матриць:
- •Двовимірні масиви. Квадратні матриці
- •Завдання:
- •Написати програму, яка вводить двовимірний масив і обчислює суму його елементів по стовпцях.
- •Написати програму, яка вводить двовимірний масив і обчислює суму його елементів по рядках.
- •Програма обчислює середнє арифметичне елементів матриці, що вводиться по рядках.
- •Написати програму, яка обчислюватиме середнє арифметичне послідовності з 10 чисел, без врахування мінімального
- •Ввести з клавіатури дійсну матрицю розмірністю 5x5. Визначити:
- •Ввести з клавіатури дійсну матрицю розмірністю 5x5.
- •Ввести з клавіатури дійсну матрицю
- •Ввести з клавіатури дійсну матрицю розмірністю 5x5. Визначити:
- •Ввести з клавіатури дійсну матрицю розмірністю
- •Ввести з клавіатури дійсну матрицю розмірністю 5x5. Визначити:
- •Ввести з клавіатури дійсну матрицю розмірністю 5x5. Визначити:
- •Двовимірні масиви.
- •Двовимірні масиви.
- •Двовимірні масиви.
Матриця є прямокутна таблиця чисел з n рядків і m стовпців.
Якщо n = m, матриця називається квадратною, а число n – її порядком.
Матрицю зазвичай представляють таким чином:
a11 a12 a13 . . . . . . . . a1m
а 21 а 22 а 23 . . . . . . . . а 2m a31 a32 а 33 . . . . . . . . .a 3m
. . . . . . . . . . . . . . . . . . . .
а n1 а n2 а n3 . . . . . . . . а nm
Рядок з індексом i, (1 ≤ i ≤ n) – це одновимірний масив елементів матриці аi1, аi2, аi3 ..., aim, в яких перший індекс i
(номер рядка) фіксований, а другий індекс j (номер стовпця)
міняється від 1 до m. Стовпець з індексом j (1 ≤ j ≤ m) – це одновимірний масив елементів матриці а 1 j, а2 j ..., аij ..., аnj, в яких другий індекс j фіксований, а перший індекс i міняється від 1 до n.
Індекси i і j елементу однозначно визначають місце
цього елементу в пам'яті. Тому для нас зручніше
матрицю представляти як таблицю індексів її
елементів або як таблицю її координат в пам'яті комп'ютера.
Координати в пам'яті комп'ютера
0,0 0,1 0,2 0,3 0,4 0,5
1,0 1,1 1,2 1,3 1,4 1,5
2,0 2,1 2,2 2,3 2,4 2,5
3,0 3,1 3,2 3,3 3,4 3,5
4,0 4,1 4,2 4,3 4,4 4,5
5,0 5,1 5,2 5,3 5,4 5,5
Головною діагоналлю квадратної матриці порядку n називають безліч елементів a11, а 22, ..., aii ..., а nn . Якщо елемент aij належить головній діагоналі, то
справедлива рівність i = j.
Побічною діагоналлю квадратної матриці порядку n
називають безліч елементів а 1n, а 2n ..., аin+1-i, ..., аn1 .
Якщо елемент aij належить побічній діагоналі, то справедлива рівність i + j = n + 1.
У мові C++ матриці відповідає двовимірний масив.
Загальний формат оголошення двовимірного масиву має наступний вигляд:
<тип> <ім'я> [n][m]
Запам'ятаємо деякі властивості квадратних матриць:
•якщо номер рядка i елементу матриці A збігається з номером стовпця j, тобто i==j, це означає, що елемент A[i][i] лежить на головній діагоналі матриці;
•якщо номер рядка i елементу матриці A перевищує номер стовпця j, тобто i>j, це означає, що елемент A[i][j] знаходиться нижчим за головну діагональ
•якщо номер стовпця j елементу матриці A більше номера рядка i, тобто i<j, це означає, що елемент A[i][j] знаходиться вищим за головну діагональ;
якщо індекси елементу A[i][j] матриці А задовольняють рівності i==N-j-1, це означає, що елемент A[i][j] лежить на побічній діагоналі;
•якщо індекси елементу A[i][j] матриці А задовольняють
нерівності i<N-j-1, це означає, що елемент A[i][j] знаходиться вищим за побічну діагональ;
•якщо індекси елементу A[i][j] матриці А задовольняють
нерівності i>N-j-1, це означає, що елемент A[i][j] знаходиться
нижчим за побічну діагональ.
Двовимірні масиви. Квадратні матриці
const int N=10;
int a[N] [N];
a[i] [j]
i
int a[m] [n], при m==n: int a[n] [n]
|
0, 0 |
|
|
|
i<j |
i<N-j-1 |
0, N-1 |
||
|
||||
|
|
|||
|
|
|||
i==j |
|
i==N-j-1 |
|
i>j |
i>N-j-1 |
j |
|
|
N-1, 0 |
|
|
N-1, N-1 |
|
|
|
|
|
|
|
a00 |
a01 |
a02 |
a03 |
a04 |
a05 |
квадратна матриця |
int a[6][6], |
||||||
a10 |
a11 |
a12 |
a13 |
a14 |
a15 |
|
a20 |
a21 |
a22 |
a23 |
a24 |
a25 |
|
a30 |
a31 |
a32 |
a33 |
a34 |
a35 |
|
a40 |
a41 |
a42 |
a43 |
a44 |
a45 |
|
a50 |
a51 |
a52 |
a53 |
a54 |
a55 |
16 |
Завдання:
Дано цілі a1...,an;
дійсні b1...,bn.
Перетворити послідовність b1...,bn за правилом: якщо ai ділиться на 10, то bi збільшується в 10 разів, інакше - bi замінити на 0.
#include <stdio.h> #include <conio.h> #include <iostream.h>
const nMax=100;
// Головна програма: void main()
{
// вихідні масиви: int а[nMax+1]; double b[nMax+1]; unsigned n;
int i,j;
clrscr(); printf("Введіть число
елементів ? "); cin >>n; if (n>nMax) n=10;
//Введення вихідних масивів
а,b:
printf("Введіть масив
а(%d):\n",n); for(i=1; i<=n; i++)
cin >>a[i]; printf("Введіть масив b(%d):\n",n); for(i=1; i<=n; i++)
cin >>b[i];
//Перетворення:
for(i=1; i<=n; i++)
if (а[i]%10==0) b[i]=b[i]*10; else b[i]=0;
// Вивід : printf("\nПеретворений масив b(%d)\n",n);
for(i=1; i<=n; i++) printf("%8.2lf",b[i]);
}
Написати програму, яка вводить двовимірний масив і обчислює суму його елементів по стовпцях.
Рішення: |
|
|
|
|
|
|
|
|
|
|
|
#include "stdafx.h" |
|
|
|
#include <iostream> |
|
|
|
using namespace std; |
|
|
|
int main() |
|
|
|
|
for (i=0; i<k; i++) |
||
{setlocale(LC_ALL,"Rus"); |
|
||
|
{ |
|
|
const int n=3, k=3; |
|
|
|
|
sum+=mas[i][j]; |
||
int i=0, j=0, sum, mas[n][k], |
|
||
|
} |
|
|
mas_sum[k]; |
|
|
|
|
mas_sum[j]=sum; |
||
for (i=0; i<n; i++) // введення |
|
||
|
} |
|
|
масиву |
|
|
|
|
for (i=0; i<k; i++) //вивід |
||
{ |
|
||
|
суми |
||
for (j=0; j<k; j++) |
|
||
|
{ |
|
|
cin>>mas[i][j]; |
|
|
|
|
cout<<" Сума "<<i+1<<" |
||
} |
|
||
|
стовпця = |
||
for (j=0; j<n; j++) // обчислення |
|
||
|
"<<mas_sum[i]<<endl; |
||
суми |
|
||
|
} |
|
|
{ |
|
|
|
|
system("pause>>void"); |
||
sum=0; |
|
||
|
return 0; |
||
|
|
||
|
|
} |
|
|
|
||
|
|
|
|
|
|
|
|
Написати програму, яка вводить двовимірний масив і обчислює суму його елементів по рядках.
#include "stdafx.h" #include <iostream> using namespace std; int main()
{setlocale(LC_ALL,"Rus"); const int n=3, k=3;
int i=0, j=0, sum, mas[n][k], mas_sum[k];
for (i=0; i<n; i++) // введення масиву
{
for (j=0; j<k; j++) cin>>mas[i][j];
}
for (i=0; i<n; i++)
// обчислення суми
{
sum=0;
for (j=0; j<k; j++)
{
sum+=mas[i][j];
}
mas_sum[i]=sum;
}
for (i=0; i<k; i++) // виведення
суми
{
cout<<" Сума "<<i+1<<" строки = "<<mas_sum[i]<<endl;
}
system("pause>>void"); return 0;
}
Програма обчислює середнє арифметичне елементів матриці, що вводиться по рядках.
#include <iostream> using namespace std; int main()
{setlocale(LC_ALL,"Rus"); const int n=3, k=3;
int i=0, j=0, mas[n][k], sum=0, sr_ar; for (i=0; i<n; i++) // введення масиву
{
for (j=0; j<k; j++) cin>>mas[i][j];
}
for (i=0; i<n; i++) // обчислення суми
{
for (j=0; j<k; j++)
{
sum+=mas[i][j];
}
}
sr_ar=sum/(k*k);
cout<<endl<<" Середнє арифметичне = "<<sr_ar; system("pause>>void");
return 0; }