资源简介

自己编写的matrix矩阵类
可以实现矩阵的加减法、乘法、求逆
求逆采用lup算法

资源截图

代码片段和文件信息

#ifndef matrix_cpp
#define matrix_cpp

#include 
#include 
#include 
#include “stdlib.h“



template 
inline void swap(type &a type &b);


matrix::matrix(void)
{
line_n = 0;
column_n = 0;
p = NULL;
}

matrix::matrix(float *mtrxint ln int cn)
{
line_n = ln;
column_n = cn;
p = new float[line_n * column_n];
if(!p)
{
    cout << “Allocation error!“ << endl;
    exit(1);
    } 
for(int i = 0; i < line_n * column_n; i++)
p[i] = mtrx[i];                         
}

matrix::matrix(const matrix &obj)
{
line_n = obj.line_n;
column_n = obj.column_n;
p = new float[line_n * column_n];
if(!p)
{
    cout << “Allocation error!“ << endl;
    exit(1);
    }
 for(int i = 0; i < line_n * column_n; i++)
   p[i] = obj.p[i];



ostream &operator<<(ostream &stream const matrix &obj)
{
    float n;
   for(int i = 0; i < obj.line_n * obj.column_n; i++)
   {
       n = obj.p[i];
       if(floor(obj.p[i]) - obj.p[i] < mat::precision && floor(obj.p[i]) - obj.p[i] > -mat::precision)
        n = floor(obj.p[i]);
   else if(ceil(obj.p[i]) - obj.p[i] < mat::precision && ceil(obj.p[i]) - obj.p[i] > -mat::precision)
    n = ceil(obj.p[i]);

  stream.precision(5);
   stream.width(12);
    if(i % obj.column_n == 0)  
 stream << endl;          
  stream << n << ‘ ‘;
      }                      

      stream << endl;
return stream;


istream &operator>>(istream &stream const matrix &obj)
{



matrix &matrix::operator= (const matrix &obj)
{
    if(this == &obj)
     return *this;
    delete []p;
p = new float[obj.line_n * obj.column_n];
line_n = obj.line_n;
column_n = obj.column_n;
if(!p)
{
cout << “Allocation error!“ << endl;
exit(1);
   }
for(int i = 0; i < obj.line_n * obj.column_n; i++)
{
  p[i] = obj.p[i];
//   p[i] = abs(p[i] - floor(p[i]) < precision) ? floor(p[i]):p[i];
//   p[i] = abs(p[i] - ceil(p[i]) < precision) ? ceil(p[i]):p[i];

  }  
            
 return *this;



matrix &matrix::operator= (const float &n)
{
    for(int i =0; i < line_n; i++)
     for(int j = 0; j < column_n; j++)
     {
     p[i * column_n + j] = n;
       }  
    return *this;
    }

//matrix matrix::operator= (float *mtrxint ln int cn)
//{
// delete p;
// p = new float[ln * cn];
// line_n = ln;
// column_n = cn;
// if(!p)
// {
// cout << “Allocation error!“ << endl;
// exit(1);
//   }
//  for(int i = 0; i < line_n * column_n; i++)
//   p[i] = mtrx[i];
//  return *this;
//  } 
 
const matrix matrix::operator+ (const matrix &obj)
{
matrix temp;
if(isempty(obj))
return *this; 
if(line_n != obj.line_n || column_n != obj.column_n)
return temp;
temp.p = new float[line_n * column_n];
temp.line_n = line_n ;
temp.column_n =  column_n; 
for(int i = 0; i < line_n * column_n; i++)
    temp.p[i] = this->p[i] + obj.p[i];
return te

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2066  2008-10-12 14:18  matrix.h

     文件      10534  2008-10-15 09:13  matrix.cpp

----------- ---------  ---------- -----  ----

                12600                    2


评论

共有 条评论