C++中如何重载输入输出流运算符使其可用于矩阵的输入输出?

代码如下,怎么改:classMatrix{public:Matrix();friendistream&operator>>(istream&,Matrix&);frien... 代码如下,怎么改:

class Matrix
{
public:
Matrix();
friend istream& operator >> (istream&,Matrix&);
friend ostream& operator << (ostream&,Matrix&);
friend Matrix operator + (Matrix &a,Matrix &b);
private:
int term[2][3];
};

Matrix::Matrix()
{
int i,j;
for (i=0;i<=1;i++)
{
for (j=0;j<=2;j++)
{
term[i][j]=0;
}
}
}

Matrix operator + (Matrix &a,Matrix &b)
{
int i,j;
Matrix c;
for (i=0;i<=1;i++)
{
for (j=0;j<=2;j++)
{

c.term[i][j]=a.term[i][j]+b.term[i][j];
}
}
return c;
}

istream & operator >> (istream & input,Matrix & a)
{
int i,j;
for (i=0;i<=1;i++)
{
for (j=0;j<=2;j++)
{
input>>term[i][j];
}
}
return input;
}

ostream & operator << (istream& output,Matrix& a)
{
int i,j;
for (i=0;i<=1;i++)
{
for (j=0;j<=2;j++)
{
output<<term[i][j];
}
}
return output;
}

int main()
{
Matrix a,b,c;
cout<<"a-->Input:"<<endl;
cin>>a;
cout<<"a="<<a<<endl;
cout<<"b-->Input:"<<endl;
cin>>b;
cout<<"b="<<b<<endl;
cout<<"c="<<c<<endl;
c = a + b;
cout<<"c=a+b="<<c<<endl;
}
展开
 我来答
风若远去何人留
推荐于2016-03-24 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450135
专业C/C++软件开发

向TA提问 私信TA
展开全部

可以将矩阵封装成一个类,然后重载该类的输入输出函数。

参考代码如下:

class matrix
{
    public:
        int ** p;
        int x,y;
        matrix(int m, int n)
        {
            x = m;
            y = n;
            p = new int*[x];
            for(int i = 0; i < x; i ++)
                p[i] = new int[y];
        }
};//定义类。
istream & operaroy >> (istream & in, matrix & v)//重载输入>>。
{
    for(int i = 0; i < x; i++)
        for(int j = 0; j < y; j++)
            in>>v.p[i][j];
    return in;
}

ostream &operator<<(ostream & out, const matrix &v)//重载输出<<。
{
    for(int i = 0; i < x; i++)
    {
        for(int j = 0; j < y; j++)
            out<<v.p[i][j]<< ',';
        out << endl;
    }
    return out;
}
bhtzu
推荐于2016-12-06 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4291万
展开全部
#include<iostream>
using namespace std;
class Matrix                                                           
{
public:
    Matrix();
    friend istream& operator >> (istream&,Matrix&);
    friend ostream& operator << (ostream&,Matrix&);
    friend Matrix operator + (Matrix &a,Matrix &b);
private:
    int term[2][3];
};

Matrix::Matrix()
{
    int i,j;
    for (i=0;i<=1;i++)
    {
        for (j=0;j<=2;j++)
        {
            term[i][j]=0;
        }
    }
}

Matrix operator + (Matrix &a,Matrix &b)
{
    int i,j;
    Matrix c;
    for (i=0;i<=1;i++)
    {
        for (j=0;j<=2;j++)
        {
            
            c.term[i][j]=a.term[i][j]+b.term[i][j];
        }
    }
    return c;
}

istream & operator >> (istream & input,Matrix & a)
{
    int i,j;
    for (i=0;i<=1;i++)
    {
        for (j=0;j<=2;j++)
        {
            input>>a.term[i][j];
        }
    }
    return input;
}

ostream & operator << (ostream& output,Matrix & a)
{
    int i,j;
    for (i=0;i<=1;i++)
    {
        for (j=0;j<=2;j++)
        {
            output<<a.term[i][j];
        }
    }
    return output;
}

int main()
{
    Matrix a,b,c;
    cout<<"a-->Input:"<<endl;
    cin>>a;
    cout<<"a="<<a<<endl;
    cout<<"b-->Input:"<<endl;
    cin>>b;
    cout<<"b="<<b<<endl;
    cout<<"c="<<c<<endl;
    c = a + b;
    cout<<"c=a+b="<<c<<endl;
}
更多追问追答
追问
用VC++6.0编译还是出错,提示为:fatal error C1001: INTERNAL COMPILER ERROR
追答

这个不是代码问题报错。

而是你工程类型和设置决定了,必须使用“预编译头文件“

如果其它设置没错,那么在你的代码最上边一行加上:

#include "stdafx.h"
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式