Написание программы, демонстрирующей работу с классом

Страницы работы

Содержание работы

Учебный курс: Парадигмы программирования

Кафедра: ИС Факультет: ИТиП

Лабораторная работа №2.

Выполнил: Смирнов Р. А. Группа: 2517

Преподаватель: Зинчик А. А.

Задание:

Описать класс, реализующий тип данных «вещественная матрица» и работу с ними. Класс должен реализовывать следующие операции над матрицами:

1)сложение, вычитание, умножение, деление (+, –, *, /) (умножение и деление как на другую матрицу, так и на число);

2)комбинированные операции присваивания (+=, –=, *=, /=);

3)операции сравнения на равенство/неравенство;

4)операции вычисления обратной и транспонированной матрицы, операцию возведения в степень;

5)методы вычисления детерминанта и нормы;

6)методы, реализующие проверку типа матрицы (квадратная, диагональная, нулевая, единичная, симметрическая, верхняя треугольная, нижняя треугольная);

7)операции ввода/вывода в стандартные потоки.

Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса.

Описание:

Класс TMatr-класс содержащий описание и методы для работы с матрицей

Переменные класса TMatr

double **a-массив размера сxr, где содержится сама матрица

int r-колличество строк

int c-колличество столбцов

Методы класса TMatr:

TMatr()-задает переменную типа TMatr

TMatr(int c, int r)-задает и передает значения в переменную типа TMatr

void set()-заполнят матрицу

void Info()-выводит матрицу

TMatr operator+(TMatr b)-скадывает 2 матрицы одинакого размера

TMatr operator-(TMatr b)-вычитает 2 матрицы одинакого размера

TMatr operator*(TMatr b)-умножает 2 матрицы размера NxN

TMatr operator/(TMatr b)-делит 2 матрицы размера NxN

TMatr operator*=(double b)-умножает матрицу на число

TMatr operator/=(double b)-делит матрицу на число

TMatr operator^(int b)-возводит матрицу типа NxN в степень

bool operator==(TMatr b)-проверяет матрицы на равенство

void ObratMatr()-вычисляет обратную матрицу, только для NxN

void TransMatr()-вычисляет транспонированную матрицу, только для NxN

double det(int n)-вычисление детерминаты, только для NxN

void MatrNorm()-вычисление нормы

double Minor(int x,int y)-вычисление минора

void MatrType()-определение типа матрицы

bool TypeSq()-проверка на квадратный тип матрицы

bool TypeUpRec()-проверка на тип верхнего треугольника

bool TypeDownRec()-проверка на тип нижнего треугольника

bool TypeZero()-проверка на нулевой тип матрицы

bool TypeOne()-проверка на единичный тип матрицы

bool TypeSimetr()-проверка на симметричный тип матрицы

void menu()-меню

#ifndef TMATR_H

#define TMATR_H

#include <string>

using namespace std;

class TMatr{

                  double **a;

                  int r;

                  int c;

public:

                  TMatr();//задает переменную типа TMatr

                  TMatr(int c, int r);//задает и передает значения в переменную типа TMatr

                  void set();//заполнят матрицу

                  void Info();//выводит матрицу

                  TMatr operator+(TMatr b);//скадывает 2 матрицы одинакого размера

                  TMatr operator-(TMatr b);//вычитает 2 матрицы одинакого размера

                  TMatr operator*(TMatr b);//умножает 2 матрицы размера NxN

                  TMatr operator/(TMatr b);//делит 2 матрицы размера NxN

                  TMatr operator*=(double b);//умножает матрицу на число

                  TMatr operator/=(double b);//делит матрицу на число

                  TMatr operator^(int b);//возводит матрицу типа NxN в степень

                  bool operator==(TMatr b);//проверяет матрицы на равенство

                  void ObratMatr();//вычисляет обратную матрицу, только для NxN

                  void TransMatr();//вычисляет транспонированную матрицу, только для NxN

                  double det(int n);//вычисление детерминаты, только для NxN

                  void MatrNorm();//вычисление нормы

                  double Minor(int x,int y);//вычисление минора

                  void MatrType();//определение типа матрицы

                  bool TypeSq();//проверка на квадратный тип матрицы

                  bool TypeUpRec();//проверка на тип верхнего треугольника

                  bool TypeDownRec();//проверка на тип нижнего треугольника

                  bool TypeZero();//проверка на нулевой тип матрицы

                  bool TypeOne();//проверка на единичный тип матрицы

                  bool TypeSimetr();//проверка на симметричный тип матрицы

                  void menu();//меню

};

#endif

****************************************************************************************************************

#include "TMatr.h"

#include <iostream>

double TMatr::det(int n){

                  double res=0;

                  TMatr q(c,r);

                  if(n==2){

                                    return (a[0][0]*a[1][1]-a[0][1]*a[1][0]);

                  }

                  for(int i=0;i<n;i++){

                                    for(int y=1; y<n; y++)

                                                     for(int x=0; x<n; x++){

                                                                       if(x==i) continue;

                                                                       if(x<i)

                                                                                         q.a[y-1][x]=a[y][x];

                                                                       else

                                                                                         q.a[y-1][x-1]=a[y][x];

                                                     }

                                                     res+=pow(-1,(double)(2+i))*a[0][i]*q.det(n-1);

                  }

                  return res;

}

TMatr::TMatr(int c, int r){

                  this->c=c;

                  this->r=r;

                  a=new double *[c];

                  for (int i=0;i<c;i++){

                                    a[i]=new double [r];

                  }

                  for (int i=0;i<r;i++){

                                    for (int j=0;j<c;j++){

                                                     a[i][j]=NULL;

                                    }

                  }

}

TMatr::TMatr(){}

void TMatr::set(){

                  cout<<"Enter the matrix "<<c<<"x"<<r<<endl;

                  for (int i=0;i<r;i++){

                                    for (int j=0;j<c;j++){

                                                     cin>>a[i][j];

                                    }

                  }

}

void TMatr::Info(){

                  for (int i=0;i<r;i++){

                                    for (int j=0;j<c;j++){

                                                     cout<<a[i][j]<<" ";

                                    }

                                    cout<<endl;

                  }

}

TMatr TMatr::operator+(TMatr b){

                  TMatr c(c,r);

                  for (int i=0;i<c.r;i++){

                                    for (int j=0;j<c.c;j++){

                                                     c.a[i][j]=a[i][j]+b.a[i][j];

                                    }

                  }

                  return c;

}

TMatr TMatr::operator-(TMatr b){

Похожие материалы

Информация о работе