c++ 哪错了???
#include<iostream.h>#include<stdio.h>#include<string.h>classMatrix{private:introw,col...
#include <iostream.h>
#include<stdio.h>
#include<string.h>
class Matrix
{
private:
int row,col;
int * m;
public:
Matrix(int r,int c)
{
row=r;
col=c;
m=new int [strlen(r*c+1)];
}
void disp()
{
for(int i=0;i<row;i++)
{
cout<<'\t';
for(int j=0;j<col;j++)
cout<<*(m+i*col+j)<<'\t';
cout<<endl;
}
}
friend Matrix operator (Matrix &a,Matrix &b)
{
if((a.row==b.row)&&(a.col==b.col))
{
Matrix temp;
for(i=0;i<(a.r*a.c+1);i++)
temp::*(m+i)=a::*(m+i)+b::*(m+i);
return temp;
}
else
cout<<"program terminated!"<<endl;
}
Matrix & operator (const Matrix &s)
{
if(m)
delete []m;
if(s.m)
{
m=new int[strlen(s.m)+1];
strcpy(m,s.m);
}
else
m=0;
return *this;
}
~Matrix()
{
if(m)
delete []m;
}
};
int main()
{
int row_a,col_a,row_b,col_b;
cout<<"请输入am矩阵的行数和列数:";
cin>>row_a>>col_a;
Matrix am(row_a,col_a);
cout<<"请输入bm矩阵的行数和列数:";
cin>>row_b>>col_b;
Matrix bm(row_b,col_b),cm;
cout<<"am:"<<endl;
am.disp();
cout<<"bm:"<<endl;
bm.disp();
cm=am+bm;
cout<<"cm=am+bm:"<<endl;
cm.disp();
am=bm;
cout<<"am=bm:"<<endl;
am.disp();
return 0;
}
要求:
设计一个矩阵类,要求矩阵类中重载运算符加(+)和赋值(=),主函数定义类对象并调用重载的运算符。
提示: (1)
本题考虑可加(即加与被加矩阵的行列数必须分别相等)和可赋值(等号左值和右值的行列数必须分别相等)情况,其他情况输出 “ program terminated!
”
(2) 要求分别输入矩阵 am 和 bm 的行列数,各矩阵元素,分别计算 cm=am+bm;am=bm; 并进行输出
(3)
定义相应的构造函数和析构函数
(4) 类中的成员变量应当有三个: int row,col;
分别表示矩阵的行数和列数,另外还需要定义一个一级指针m用来申请动态空间,存放 row*col 个整数
( 5
)程序最前面的文件包含提交到系统中请用下面代码:
#include <iostream>
using namespace
std;
#include
<stdlib.h>
但是在VC++环境下本地测试时,如果你的程序中用到了友元,则要将头文件用下面的代码(提交时再修改为上面的三行):
#include
<iostream.h>
#include
<stdlib.h>
即本地调试运行正确无误后,再将头文件部分改掉提交! 展开
#include<stdio.h>
#include<string.h>
class Matrix
{
private:
int row,col;
int * m;
public:
Matrix(int r,int c)
{
row=r;
col=c;
m=new int [strlen(r*c+1)];
}
void disp()
{
for(int i=0;i<row;i++)
{
cout<<'\t';
for(int j=0;j<col;j++)
cout<<*(m+i*col+j)<<'\t';
cout<<endl;
}
}
friend Matrix operator (Matrix &a,Matrix &b)
{
if((a.row==b.row)&&(a.col==b.col))
{
Matrix temp;
for(i=0;i<(a.r*a.c+1);i++)
temp::*(m+i)=a::*(m+i)+b::*(m+i);
return temp;
}
else
cout<<"program terminated!"<<endl;
}
Matrix & operator (const Matrix &s)
{
if(m)
delete []m;
if(s.m)
{
m=new int[strlen(s.m)+1];
strcpy(m,s.m);
}
else
m=0;
return *this;
}
~Matrix()
{
if(m)
delete []m;
}
};
int main()
{
int row_a,col_a,row_b,col_b;
cout<<"请输入am矩阵的行数和列数:";
cin>>row_a>>col_a;
Matrix am(row_a,col_a);
cout<<"请输入bm矩阵的行数和列数:";
cin>>row_b>>col_b;
Matrix bm(row_b,col_b),cm;
cout<<"am:"<<endl;
am.disp();
cout<<"bm:"<<endl;
bm.disp();
cm=am+bm;
cout<<"cm=am+bm:"<<endl;
cm.disp();
am=bm;
cout<<"am=bm:"<<endl;
am.disp();
return 0;
}
要求:
设计一个矩阵类,要求矩阵类中重载运算符加(+)和赋值(=),主函数定义类对象并调用重载的运算符。
提示: (1)
本题考虑可加(即加与被加矩阵的行列数必须分别相等)和可赋值(等号左值和右值的行列数必须分别相等)情况,其他情况输出 “ program terminated!
”
(2) 要求分别输入矩阵 am 和 bm 的行列数,各矩阵元素,分别计算 cm=am+bm;am=bm; 并进行输出
(3)
定义相应的构造函数和析构函数
(4) 类中的成员变量应当有三个: int row,col;
分别表示矩阵的行数和列数,另外还需要定义一个一级指针m用来申请动态空间,存放 row*col 个整数
( 5
)程序最前面的文件包含提交到系统中请用下面代码:
#include <iostream>
using namespace
std;
#include
<stdlib.h>
但是在VC++环境下本地测试时,如果你的程序中用到了友元,则要将头文件用下面的代码(提交时再修改为上面的三行):
#include
<iostream.h>
#include
<stdlib.h>
即本地调试运行正确无误后,再将头文件部分改掉提交! 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询