
Т
еоретичний
матеріал для самостійного вивчення
з
дисципліни «Основи програмування та
алгоритмічні мови»
Приклади задач обробки матриць
Приклад 1.
Знайти суму елементів матриці, які розташовані над головною діагоналлю.
# include<iostream.h>
void main()
{
int S, i, j, N, M, a[20][20];
cout<<”N= “;
cin>>N;
cout<<”M= “;
cin>>M;
cout<<”Input Matrix A”<<endl;
for(i=0; i<N; i++)
for(j=0; j<M; j++)
cin>>a[i][j];
for(S=i=0; i<N; i++)
for(j=0; j<M; j++)
if (j>i) S+=a[i][j];
cout<<”S=”<<S<<endl;
}
Приклад. Скласти програму, яка вводить по рядкам з клавіатури двовимірний масив та обчислює суму його елементів по стовпцям.
// обчислення суми елементів масиву(по стовпцям)
#include <iostream.h>
Void main()
{
const int ROW=3 // кількість рядків
const int COL=5 // кількість стовпців
int a[ROW][COL]; // масив
int s[COL]; // сума елементів
int i,j;
cout<<"\n Введіть масив \n";
cout<<"Після введення елементів кожного рядка,";
cout<<COL<<" цілих чисел, натискайте <Enter> \n";
for (i = 0; i < ROW; i++) // ROW рядків
{
for (j = 0; j < COL; j++)
cin>>a[i][j];
}
cout<<"\n Введений масив \n";
for (i = 0; i < ROW; i++)
{
for (j = 0; j < COL; j++)
cout<<a[i][j]<<’ ‘;
cout<<"\n";
}
// "очистимо" масив s
for (i = 0; i < COL; i++)
s[i]=0;
// обробка
for (j = 0 ; j < COL; j++) // для кожного стовпця
for (i = 0; i < ROW; i++) // сумуємо елементи
s[j] += a[i][j];
cout<<"-------------------------\n";
for (i = 0; i < COL; i++)
cout<<s[i]<<’ ’;
}
Приклад.
Скласти програму, яка обчислює визначник квадратної матриці другого порядку.
// визначник квадратної матриці другого порядку
#include <iostream.h>
Void main()
{
float a[2][2]; // матриця
float det; // визначник (детермінант)
int i,j; // індекси масиву
соut<<"\n Введіть матрицю другого порядку.\n";
соut<<"Після введення елементів рядка натисніть <Enter>\n";
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++)
cin>>a[i][j];
det =a[0][0]*a[1][1]-a[0][1]*a[1][0] ;
соut<<"\n Визначник матриці \n"<<det;
}
Приклад.
Скласти програму, яка визначає номер рядка квадратної матриці, сума елементів якого максимальна.
// Рядок з максимальною сумою елементів
#include <iostream.h>
Void main ()
{
const int N=3;// розмір квадратної матриці
int m[N][N+1]; // останній стовпець використовуємо
// для зберігання суми елементів рядка
int max; // Рядок з максимальною сумою
// елементів
int i,j; // індекси
cout<<"\n Визначення рядка з максимальною ";
cout<<"сумою елементів";
cout<<"Введіть матрицю \n";
for (i = 0; i < N; i++)
{
cout<<"Елементи "<<i+1<<"-го рядку ";
for (j = 0; j < N; j++)
cin>>m[i][j];
}
// для кожного рядка обчислимо суму елементів
for (i = 0; i < N; i++)
{
m[i][N] = 0;
for(j = 0; j < N; j++)
m[i][N]+= m[i][j];
}
// знайдемо рядок з максимальною сумою
max = 0;
for (i=1; i < N; i++)
if (m[i][N]>m[max][N])
max=i;
cout<<"\n B "<<max+1<<"-му рядку сума елементів";
cout<<" максимальна і дорівнює \n", m[max][N];
}
Приклад.
Дана прямокутня матриця розміру m×n. Скласти програму, яка знаходить рядки з найбільшою та найменшою сумою елементів. Вивести знайдені рядки та суми їх елементів.
#include<iostream.h>
#include<stdlib.h>
Void main()
{const int m=8,n=10;
int A[m][n],i,j,sum[m]={0};
for (i=0; i<m; i++)
for (j=0; j<n; j++)
A[i][j]=rand()%10-5;
for (i=0; i<m; i++)
for (j=0; j<n; j++)
sum[i]+=A[i][j];
int max=sum[0];
int min=sum[0];
int maxi=1;
int mini=1;
for (i=0; i<m; i++)
{if (max<sum[i])
{max=sum[i];
maxi=i;}
if (sum[i]<min)
{min=sum[i];
mini=i;}
}
for (i=0; i<m; i++)
{for (j=0; j<n; j++)
cout<<" "<<A[i][j];
cout<<"\n";}
cout<<"Рядок з максимальною сумою елементів з номером "<<maxi<<" сума дорівнює "<<max<<"\n";
cout<<" Рядок з мінімальною сумою елементів з номером "<<mini<<" сума дорівнює "<<min<<"\n";
for (i=0; i<m; i++)
cout<<sum[i]<<"\n";
}
Приклад. Дана прямокутня матриця розміру N×M. Скласти програму, яка перетворює матрицю наступним чином: поелементно віднімає останній рядок із всіх рядків, крім останнього.
#include<iostream.h>
#include<math.h>
#include<stdlib.h>