| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 918 人关注过本帖
标题:[求助]郁闷了好几天的程序!
只看楼主 加入收藏
轮廓
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-4-20
收藏
 问题点数:0 回复次数:11 
[求助]郁闷了好几天的程序!

//编译成功,连接也成功,但执行时出现内存错误,不懂?

#include<iostream.h>
#include<stdlib.h>
//using namespace std;
class Matrix //矩阵类
{

private:
int rows,cols; //矩阵的行列
double *m; //矩阵存放的元素,按行存放

public:
Matrix(int N_rows=2,int M_cols=2);
~Matrix();

MatriX(const Matrix &ZM);

Matrix operator+(Matrix &AMD); //重载+
void input();//矩阵输入
void display();//矩阵输出
};


Matrix::Matrix(int N_rows,int M_cols)
{
rows=N_rows;
cols=M_cols;

m = new double [rows * cols];

}


Matrix::~Matrix()
{
delete []m;
}

Matrix::MatriX(const Matrix &ZM)
{


int r=0;

for(int Row=1;Row<=rows;Row++)
for(int Col=1;Col<=cols;Col++)

m[r++]=ZM.m[r++];



}


Matrix Matrix::operator+(Matrix &AMD)
{
int r=0;

if(rows==AMD.rows && cols==AMD.cols)
{
Matrix GM(rows,cols);

for(int Row=1;Row<=rows;Row++)
for(int Col=1;Col<=cols;Col++)
{
GM.m[r++]=m[r++]+AMD.m[r++];
}




return GM;
}

else
{
cout<<"距阵相加运算错误"<<endl;
exit(0);



}

}



void Matrix::input()
{
int r=0;
for(int Row=1;Row<=rows;Row++)
for(int Col=1;Col<=cols;Col++)
cin>>m[r++];

}


void Matrix::display()
{
int r=0;
for(int Row=1;Row<=rows;Row++)
{
for(int Col=1;Col<=cols;Col++)
cout<<m[r++]<<'\t';

cout<<endl;
}

}

int main()
{

Matrix a(2,2); //矩阵a 2行2列
Matrix b(2,2); //矩阵b 2行2列
Matrix c(2,2); //矩阵c 2行2列


cout<<"请输入你想要的2行2列的距阵:\t\n";
a.input();


cout<<"请输入你想要的2行2列的距阵:\t\n";
b.input();
cout<<endl;

c=a+b;
cout<<"下面是你想得到的相加后的2行2列的距阵:\t\n\n";
c.display();

return 0;

}

搜索更多相关主题的帖子: 矩阵 double private include public 
2007-07-19 13:17
轮廓
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-4-20
收藏
得分:0 

斑竹、各位大虾help me

2007-07-19 13:23
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
自己调试啊,多数是wild pointer的问题咯
2007-07-19 13:26
轮廓
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-4-20
收藏
得分:0 
自己调试了,就是在DOS界面里会出现一个有 终止,重试,取消 的界面,无论也不会有结果,不懂
2007-07-19 13:32
轮廓
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-4-20
收藏
得分:0 

谢谢啊,在帮我看看吧!

2007-07-19 13:38
轮廓
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-4-20
收藏
得分:0 
[IMG]http://C:\Documents and Settings\Administrator\桌面[/IMG]
2007-07-19 13:43
轮廓
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-4-20
收藏
得分:0 

昨天又调试了,原来是析构函数的问题,单不知道为什么

2007-07-20 10:38
一番宝瓶
Rank: 1
等 级:新手上路
帖 子:239
专家分:0
注 册:2007-7-14
收藏
得分:0 
如果你有用new在堆区分配空间,析构函数里必须用delete来释放

2.3.2.2.2.0
2007-07-20 12:26
HCL
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-6-13
收藏
得分:0 

好像重载操作符有问题!

2007-07-20 14:48
smithallen
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-6-26
收藏
得分:0 
问题出在c=a+b上了,因为你的类中含有指向动态分配内存的指针成员,在复制此成员时就可能出现危险。
2007-07-20 14:49
快速回复:[求助]郁闷了好几天的程序!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025356 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved