编写一个矩阵程序,要求可以运算矩阵的加减乘除,帮帮忙。

keven102 2012-05-19 07:09:59
具体要求和题目一样,谢谢.....^_^
...全文
538 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathuang68 2012-05-21
  • 打赏
  • 举报
回复
唉,哥给你写矩阵的加法和减法吧,乘法和除法自己去实现,都不难的(感到难就去翻线代),共楼主参考:

#include <iostream>
using namespace std;

class Matrix
{
private:
double* data;
int row;
int column;
public:
Matrix(int row, int column)
{
this->row = row;
this->column = column;
data = new double[row * column];//(double*)malloc(sizeof(double) * row * column);
}

double* get_data()
{
return data;
}

int get_row()
{
return row;
}

int get_column()
{
return column;
}

Matrix& ADD(Matrix& matrix)
{
if((row != matrix.get_row()) || (column != matrix.get_column()))
{
cout << "Fails to add two matrices with different row or column." << endl;
}

for(int i = 0; i < row; ++i)
{
for(int j = 0; j < column; ++j)
{
*(data + i * column + j) += *(matrix.get_data() + i * column + j);
}
}

return *this;
}

Matrix& MINUS(Matrix& matrix)
{
if((row != matrix.get_row()) || (column != matrix.get_column()))
{
cout << "Fails to minus a matrix with different row or column." << endl;
}

for(int i = 0; i < row; ++i)
{
for(int j = 0; j < column; ++j)
{
*(data + i * column + j) -= *(matrix.get_data() + i * column + j);
}
}

return *this;
}

void display()
{
for(int i = 0; i < row; ++i)
{
for(int j = 0; j < column; ++j)
{
cout << *(data + i * column + j) << "\t";
}
cout << endl;
}
}

~Matrix()
{
//free(data);
delete[] data;
}
};

int main(int argc, char** argv)
{
Matrix a(2, 2);
for(int i = 0; i < 2; ++i)
{
for(int j = 0; j < 2; ++j)
{
*(a.get_data() + i * 2 + j) = 1 + i * 2 + j;
}
}

a.display();
cout << "============" << endl;

Matrix b(2, 2);
for(int i = 0; i < 2; ++i)
{
for(int j = 0; j < 2; ++j)
{
*(b.get_data() + i * 2 + j) = 2 + i * 2 + j;
}
}

b.display();
cout << "============" << endl;

//a.ADD(b);
//a.display();
//cout << "============" << endl;

b.MINUS(a);
b.display();

return 0;
}
某大一菜鸟 2012-05-21
  • 打赏
  • 举报
回复
用matlab生成dll然后直接那啥...
CandPointer 2012-05-21
  • 打赏
  • 举报
回复
线性代数库,blas, lapack, intel mkl ....


开源,商业,各种 线性代数的库。 拿来主义就行了
keven102 2012-05-21
  • 打赏
  • 举报
回复
呵呵,谢谢啊.....
paschen 版主 2012-05-20
  • 打赏
  • 举报
回复
我也不太懂。
不过你只追求简单,直接用二维数组来存储行和列,之后对应行列加减对应行列就行了。
好像算法里有矩阵的一些存储方法可以节约内存,不过看不懂。
keven102 2012-05-20
  • 打赏
  • 举报
回复
表示对线性代数很无奈,网上的看起来好复杂,能不能帮忙编个?只要加减乘就行了,谢谢......^_^
pathuang68 2012-05-19
  • 打赏
  • 举报
回复
加减乘应该是很简单的。除法要算逆矩阵。
没有昵称阿 2012-05-19
  • 打赏
  • 举报
回复
这个~~~很简单的,网上搜搜,自己写写就出来了啊 ~~

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧