Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки, молоді та спорту України
Національний університет “Львівська політехніка”
Кафедра КСА
Класові типи. Використання класових типів та управління об'єктами
Лабораторна робота № 1
з курсу “Алгоритмічні мови та програмування. Частина 2”
Варіант- 6
Львів 2014
1.Мета роботи:
Вивчити основні принципи об’єктно-орієнтованого програмування та структуру класів в алгоритмічній мові С++, навчитися створювати класові типи, вміти їх використовувати та управляти об’єктами.
2. Завдання:
Написати програму алгоритмічною мовою С++ згідно з завданням, отриманим від викладача за табл. 1: задану прямокутну матрицю A={aij} відсортувати за вказаним алгоритмом; для відсортованої матриці знайти значення функції F(fi(aij)); алгоритм сортування матриці, обчислення fi(aij), введення і виведення матриці оформити у вигляді функцій; елементи матриці вводити з клавіатури; програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
Для розв'язку задачі використати клас двомірного масиву та функції-члени.
6
Впорядкувати елементи рядків матриці за спаданням їх значень методом обміну.
fi(aij)-добуток елементів у кожному стовпці під головною діагоналлю матриці; F(fi(aij))-середнє арифметичне значення fi(aij)
19 62 –45 -1 84
23 54 -4 -2 68
36 39 96 94 97
-3 -8 -4 -6 -22
98 -5 -3 0 11
3. Код програми:
#include <stdafx.h>
#include <conio.h>
#include <iostream>
#include <iomanip>
using namespace std;
const int n=5;
const int m=5;
//////////////////////////////////////////////////
// Оголошення класу
class Matrix
{
private:
double M[n][m];
public:
void inputMatrix();
void outputMatrix();
void dobMatrix();
void sort();
};
//////////////////////////////////////////////////
// Ввід матриці
void Matrix::inputMatrix()
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
cout<<"["<<i<<"]["<<j<<"] = ";
cin>>M[i][j];
}
}
//////////////////////////////////////////////////
// Вивід матриці
void Matrix::outputMatrix()
{
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
cout<<setw(7)<<M[i][j]<<" ";
cout<<endl;
}
}
//////////////////////////////////////////////////
// Знаходження добутку стовпців під головною діагоналлю
void Matrix::dobMatrix()
{
double g=0;
int k=0;
double bpsum=1;
for(int j=0;j<5;j++)
{
for(int i=0; i<5; i++)
{
if (i>j)
{
bpsum=bpsum*M[i][j];
k=k+1;
}
}
g=(g+bpsum)/k;
cout<<"suma main diagonal = \t\t"<<bpsum<<"\n\n";
bpsum=1;
}
cout<<"g = \t\t"<<g<<"\n\n";
cout<<"k=\t\t"<<k<<"\n\n";
}
//////////////////////////////////////////////////
// Сортування масиву
void Matrix::sort()
{
double value;
int temp;
for(int k=0;k<m;k++)
for(int i=0;i<n-1;i++)
for (int j=n-1;j>=i+1;j--)
if(M[k][j]>M[k][j-1])
{
value=M[k][j];
M[k][j]=M[k][j-1];
M[k][j-1]=value;
}
}
//////////////////////////////////////////////////
void main(void)
{
Matrix A;
cout<<"Input elements of matrix A"<<endl;
A.inputMatrix();
cout<<"newInput Matrix A"<<endl;
A.outputMatrix();
cout<<"Dob Matrix A"<<endl;
A.dobMatrix();
A.sort();
cout<<"newSorted Matrix A"<<endl;
A.outputMatrix();
getch();
}
//////////////////////////////////////////////////
Результат роботи програми: