Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Звіт.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
436.18 Кб
Скачать

Індивідуальне завдання 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]