
- •Звіт з навчальної практики з об’єктно-орієнтованого програмування
- •Індивідуальне завдання 1
- •Текст програми
- •Індивідуальне завдання 2
- •Текст програми
- •Індивідуальне завдання 3
- •Текст програми
- •Індивідуальне завдання 4
- •Текст програми
- •Індивідуальне завдання 5
- •Текст програми
- •Тема 2. Конструктори. Деструктори.
- •Індивідуальне завдання 1
- •Текст програми
- •Тема 3. Дружні функції і класи.
- •Індивідуальне завдання 1
- •Текст програми
- •Тема 4. Превантаження операцій.
- •Індивідуальне завдання 1
- •Текст програми
Індивідуальне завдання 4
Створити клас матриця. Даний клас містить покажчик на int,
розмір рядків і стовпців і стан помилки. Визначити конструктор без
параметрів, конструктор з одним параметром і конструктор з двома
параметрами, деструктор. Визначити методи доступу: повертати значення
елемента (i, j) і адресу цього елемента. Визначити функцію друку. визначити
функції додавання і віднімання (матриці з матрицею), множення матриці на
матрицю. Визначити множення матриці на число. Перевірити роботу цього
класу. У разі нестачі пам'яті, невідповідності розмірностей, виходу за
межі встановлювати код помилки.
Текст програми
#include "iostream.h"
using namespace std;
class Matrix {
public:
int **A; //вказівник
int N;
Matrix () {}
Matrix(int N,int M) // заповнюємо матрицю
{ A= new int*[N];
for (int i = 0; i < N; i++)
A[i] = new int[N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
A[i][j]=rand()%10; }}
}// виконання операцій
void Show(Matrix &obj,int N,int M){
int i,j;
for(i=0; i<N; i++){
for(j=0; j<M; j++){
cout<<" "<<A[i][j];}
cout <<endl; }
cout <<endl;
}
Matrix Matrix::Add(Matrix obj,int N,int M){
Matrix result(N,M);
for(int i=0;i<N;i++)
for(int j=0;j<M;j++) { result.A[i][j]=0;
result.A[i][j]+=A[i][j] + obj.A[i][j];}
return result;
}
Matrix Matrix::Sub(Matrix obj,int N,int M){
Matrix result(N,M);
for(int i=0;i<N;i++)
for(int j=0;j<M;j++) { result.A[i][j]=0;
result.A[i][j]+=A[i][j] - obj.A[i][j];}
return result;
}
Matrix Matrix::Mul_nf(int N,int M,int num){
Matrix result(N,M);
for(int i=0;i<N;i++)
for(int j=0;j<M;j++) { result.A[i][j]=0;
result.A[i][j]+=A[i][j]*num;}
return result;
}
Matrix Matrix::Mul_ns(Matrix obj,int N,int M,int num){
Matrix result(N,M);
for(int i=0;i<N;i++)
for(int j=0;j<M;j++) { result.A[i][j]=0;
result.A[i][j]+=obj.A[i][j]*num;}
return result;
}
Matrix Matrix::Mul(Matrix obj,int N,int M){ // моження матриці на матрицю
Matrix result(N,M);
for(int k=0; k<N;k++)
for(int i=0;i<M;i++) { result.A[k][i]=0;
for(int j=0;j<M;j++)
result.A[k][i]+=A[k][j] * obj.A[j][i];}
return result;
}
int accept(int i,int j) {return A[i][j]; }
int* accept_ad(int i,int j) {return &A[i][j]; }
};
void main(void) // тіло програми
{
int n_,m_,num,n,m;
char cs;
srand(time(0));
Matrix result; // виводимо результат на екран
system("cls");
cout<<"Size:"<<endl<<"Rows: ";
cin>>n;
cout<<"Cols: ";
cin>>m;
system("cls");
Matrix first(n,m); // перша матриця
Matrix second(n,m); // друга матриця
do { system("cls");// очистка вікна
first.Show(first,n,m);
second.Show(second,n,m);
cout << "1.Add.\n"
<< "2.Sub.\n"
<< "3.Mult.\n"
<< "4.Mult on number(first matrix).\n"
<< "5.Mult on number(second matrix).\n"
<< "6.Accept to element(first matrix).\n"
<< "7.Accept to element(second matrix).\n"
<< "0.Exit.\n";
cout<<endl<<"Enter: ";cin>>cs;
cout<<endl<<"Result:"<<endl;
switch(cs)
{
case'1':{ result=first.Add(second,n,m); result.Show(result,n,m);break;}
case'2':{ result=first.Sub(second,n,m); result.Show(result,n,m);break;}
case'3':{ result=first.Mul(second,n,m); result.Show(result,n,m);;break;}
case'4':{ cout<<"Enter number: "; cin>>num; result=first.Mul_nf(n,m,num); result.Show(result,n,m); ;break;}
case'5':{ cout<<"Enter number: "; cin>>num; result=first.Mul_ns(second,n,m,num); result.Show(result,n,m); ;break;}
case'6':{ cout<<"Row: "; cin>>n_; cout<<"Col: "; cin>>m_; cout<<"A[Row][Col] = "<<first.accept(n_,m_)<<endl;
cout<<"&A[Row][Col] = "<<first.accept_ad(n_,m_)<<endl; break;}
case'7':{ cout<<"Row: "; cin>>n_; cout<<"Col: "; cin>>m_; cout<<"A[Row][Col] = "<<second.accept(n_,m_)<<endl;
cout<<"&A[Row][Col] = "<<second.accept_ad(n_,m_)<<endl; break;}
default:exit(1);
}
system("PAUSE");} while(1) ;
}
Результат роботи програми:
Рисунок 1.4