- •Курсовая работа
- •Глава 1
- •Глава 2
- •2.1.1 Матрицы
- •2.1.2 Определители.
- •2.2.1. Функциональные требования
- •2.2.2. Требования к интерфейсу
- •Глава 3
- •3.2.1.Классы
- •3.2.2.Модули
- •3.2.3.Схема алгоритма
- •3.2.4.Обработка исключений
- •Исходный текст программы Project1.Cpp
- •Unit1.H
- •Unit1.Cpp
- •File1.Cpp
- •Unit2.H
- •Unit2.Cpp
- •File2.H
Unit2.H
//---------------------------------------------------------------------------
#ifndef Unit2H
#define Unit2H
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
//*****************************************************************************
//******************************* CLASS TMATRIX *******************************
//*****************************************************************************
class TMatrix
{
private:
//----------------- ??????????
int **_mat;
public:
unsigned char _NNUM1, _NNUM2;
//----------------- Constructors
TMatrix();
TMatrix(int);
//----------------- Metods
//----------- Init operations
void InitRandom();
void InitZero();
void InitE();
//----------- One element operations
void InitElem(int, int, int);
int GetElem(int, int);
//----------- Matrix operations
void MScalMult(int);
void MSumm(TMatrix &, TMatrix &);
void MDiff(TMatrix &, TMatrix &);
void MMult(TMatrix &, TMatrix &);
void MNegative();
void MTrans();
void MMod();
void MMin();
//----------- Size operations
void DeleteOldMatrix();
void InitNewMatrix1();
void InitNewMatrix1(int, int);
};
//---------------------------------------------------------------------------
#endif
Unit2.Cpp
//---------------------------------------------------------------------------
#pragma hdrstop
#include "Unit2.h"
#include "Unit1.h"
//*****************************************************
//********************* Constructors ******************
//*****************************************************
TMatrix :: TMatrix(void)
{
_NNUM1 = 3;
_NNUM2 = 3;
_mat = new int *[_NNUM1];
for (int i = 0; i < _NNUM1; i++)
_mat[i] = new int[_NNUM2];
for (int i = 0; i < _NNUM1; i++)
for (int j = 0; j < _NNUM2; j++)
_mat[i][j] = 0;
}
//*****************************************************************************
TMatrix :: TMatrix(int InitNum)
{
_NNUM1 = 3;
_NNUM2 = 3;
_mat = new int *[_NNUM1];
for (int i = 0; i < _NNUM1; i++)
_mat[i] = new int[_NNUM2];
for (int i = 0; i < _NNUM1; i++)
for (int j = 0; j < _NNUM2; j++)
_mat[i][j] = InitNum;
}
//***************************************************************************
//***************************** CLASS FUNCTIONS
//***************************************************************************
//***************************** INITNEWMATRIX
void TMatrix :: InitNewMatrix1(int m, int n)
{
_NNUM1 = m;
_NNUM2 = n;
_mat = new int *[_NNUM1];
for (int i = 0; i < _NNUM1; i++)
_mat[i] = new int[_NNUM2];
for (int i = 0; i < _NNUM1; i++)
for (int j = 0; j < _NNUM2; j++)
_mat[i][j] = rand()%100-50;
}
//***************************** DELETEOLDMATRIX
void TMatrix :: DeleteOldMatrix()
{
for (int i = 0; i < _NNUM1; i++)
delete _mat[i];
_NNUM1 = 0;
_NNUM2 = 0;
}
//***************************** INITRANDOM
void TMatrix :: InitRandom()
{
for (int i = 0; i < _NNUM1; i++)
for (int j = 0; j < _NNUM2; j++)
_mat[i][j] = rand()%100-50;
}
//***************************** INITE
void TMatrix :: InitE()
{
if (_NNUM1 != _NNUM2)
throw 1;
for (int i = 0; i < _NNUM1; i++)
for (int j = 0; j < _NNUM2; j++)
if (i == j)
_mat[i][j] = 1;
else
_mat[i][j] = 0;
}
//***************************** MSCALMULT
void TMatrix :: MScalMult(int Scal)
{
for (int i = 0; i < _NNUM1; i++)
for (int j = 0; j < _NNUM2; j++)
_mat[i][j] *= Scal;
}
//***************************** MSUMM
void TMatrix :: MSumm(TMatrix & A, TMatrix & B)
{
if ((A._NNUM1 != B._NNUM1) || (A._NNUM2 != B._NNUM2))
throw 2;
InitNewMatrix1(A._NNUM1, A._NNUM2);
for (int i = 0; i < _NNUM1; i++)
for (int j = 0; j < _NNUM2; j++)
_mat[i][j] = A._mat[i][j] + B._mat[i][j];
}
//***************************** MDIFF
void TMatrix :: MDiff(TMatrix & A, TMatrix & B)
{
if ((A._NNUM1 != B._NNUM1) || (A._NNUM2 != B._NNUM2))
throw 2;
InitNewMatrix1(A._NNUM1, A._NNUM2);
for (int i = 0; i < _NNUM1; i++)
for (int j = 0; j < _NNUM2; j++)
_mat[i][j] = A._mat[i][j] - B._mat[i][j];
}
//***************************** MMULT
void TMatrix :: MMult(TMatrix & A, TMatrix & B)
{
if (A._NNUM2 != B._NNUM1)
throw 5;
InitNewMatrix1(A._NNUM1, B._NNUM2);
for (int i = 0; i < _NNUM1; i++)
for (int j = 0; j < _NNUM2; j++)
{
_mat[i][j] = 0;
for (int k = 0; k < A._NNUM2; k++)
_mat[i][j] += A._mat[i][k] * B._mat[k][j];
}
}
//***************************** MTRANS
void TMatrix :: MTrans()
{
if (_NNUM1 != _NNUM2)
throw 1;
int buf;
for (int i = 0; i < _NNUM1; i++)
for (int j = 0; j < i; j++)
{
buf = _mat[i][j];
_mat[i][j] = _mat[j][i];
_mat[j][i] = buf;
}
}
//***************************** MNEGATIVE
void TMatrix :: MNegative()
{
for (int i = 0; i < _NNUM1; i++)
for (int j = 0; j < _NNUM2; j++)
_mat[i][j] = -_mat[i][j];
}
//---------------------------------------------------------------------------
#pragma package(smart_init)