C++问题,高人进~

来源:百度知道 编辑:UC知道 时间:2024/05/27 18:38:17
帮我修改一下以下错误,调试一下

#include<iostream>
#include "matrix.h"
using namespace std;

matrix::matrix(){
length=1;
width=1;
for(int i=0;i<length;i++)
for(int j=0;j<width;j++)
p[i][j]=0;
}

void matrix::set(){
int l,w;
cout<<"请输入矩阵的行数:";
cin>>l;
cout<<"请输入矩阵的列数:";
cin>>w;
if(l>0)
length=l;
else length=1;
if(w>0)
width=l;
else width=1;

cout<<"请依次输入"<<(width*length)<<"个元素"<<endl;
for(int i=0;i<width;i++)
for(int j=0;j<length;j++)
cin>>p[i][j];
}

void matrix::print(){
cout<<"矩阵为:"<<endl;
for(int i=0;i<width;i++)
{
for(int j=0;j<length;j++)
cout<<p[i][j]<<'\t';
cout<<endl;
}

唔,楼主可以回去在好好看下C++错误很多

改了一部分

class matrix//个人习惯
{
int **p;
int length;
int width;
public:
matrix();
~matrix ();
void set();
void print();
matrix operator+(matrix);
matrix operator-(matrix);
matrix operator*(matrix);
};

matrix matrix::operator+(matrix a)
{
matrix c;
if(a.length == length && a.width== width)
{
c.length=a.length;
c.width=a.width;
for(int i=0;i<a.length;i++)
for(int j=0;j<a.width;j++)
c.p[i][j]=a.p[i][j]+p[i][j];
}
else
{
cout<<"请检查矩阵,它们不能做加法!"<<endl;
c.length=1;
c.width=1;
for(int i=0;i<c.length;i++)
for(int j=0;j<c.width;j++)
c.p[i][j]=0;}
return c;
}

在主函数中int **p;这个没有分配空间。...时间有限,就这些。建议哈多看下书或者网上多多的搜一下

你有两个错误:
1.在set()函数里应该为数组开辟内存
2.应该用(*p