注册 登录
编程论坛 C++教室

C++编程出现点问题 求解答!!

YZAM 发布于 2010-06-05 18:42, 740 次点击
有两个矩阵a和b,均为2行3列,编译程序,求两个矩阵之和。重载插入运算符“<<”和提取运算符“>>”,使之能用于该矩阵的输入输出。重载运算符“+”,使之能用于矩阵相加,如c=a+b。   我变得程序下   求和的结果有错!!!


#include<iostream>
using namespace std;
class JU{
public:
    JU()
    {a[0][0]=0;
     b[0][0]=0;
     c[0][0]=0;
    }
   
    int a_set()
    {int i,j;
     for( i=0;i<2;i++)
     {cout<<"a数组输入第"<<i+1<<"行:"<<endl;
       for(j=0;j<3;j++)
       {cin>>a[i][j];}
     }
     return 0;
    }
    int b_set()
    {int i,j;
     for( i=0;i<2;i++)
     {cout<<"b数组输入第"<<i+1<<"行:"<<endl;
       for(j=0;j<3;j++)
       {cin>>b[i][j];}
     }
     return 0;
    }
    friend JU operator+(JU &a1,JU &b1);
    friend ostream &operator<<(ostream &out,JU &obj);
    friend istream &operator>>(istream &in,JU &obj);
private:
    int a[2][3];
    int b[2][3];
    int c[2][3];
};
ostream &operator<<(ostream &out,JU &obj)
{out<<obj.a_set();
 return out;
}
istream &operator>>(istream &in,JU &obj)
{    return in;}
 JU operator+(JU &a1,JU &b1)
 {JU temp;
  int i,j;
  for(i=0;i<2;i++)
      for(j=0;j<3;j++)
      {temp.c[i][j]=a1.a[i][j]+b1.b[i][j];
        cout<<temp.c[i][j]<<" ";
      }
  return temp;
 }
void main()
{JU ob_a,ob_b,sum;
cout<<ob_a<<endl;
cout<<ob_b<<endl;
sum=ob_a+ob_b;
}
7 回复
#2
YZAM2010-06-05 18:53
大侠帮帮忙啊。。。。。。。。。。。
#3
因酷判刑十年2010-06-08 01:41
帮帮忙啊。。。。。。。。。。。
#4
lijm19892010-06-08 10:55
求和错误是因为你求和的对象有问题。归根到底是代码有问题。你输入的时候是都是调用 obj.a_set();就是说,每个对象都是设置a数组。然后你的求和是:
temp.c[i][j]=a1.a[i][j]+b1.b[i][j];
因为b1是只赋了a数组的值,而b数组未操作,仍是系统的未定值,你进行相加操作的话,自然会出错。想结果对的话,可将上面那句话改为:
temp.c[i][j]=a1.a[i][j]+b1.a[i][j];
最后,你的代码很不合格。。重载插入运算符和提取运算符不是这样子来的,重载 + 也应该是单纯的 + 。建议好好看看书,看看别人的代码,参考一下。
#5
xin3109232010-06-08 13:42
ostream  是什么意思啊    自己定义的变量名吗????
#6
rwyangguang2010-06-14 22:22

#include<iostream>
using namespace std;
改为
#include<iostream.h>就行

我也不知道为什么  ,最近也在这纠结
#7
lintaoyn2010-06-15 08:48
回复 6楼 rwyangguang
VC6对友函数的支持问题,在类前面先声明下输入输出这两个友函数就可以了。
#8
南国利剑2010-06-15 15:56
回复 5楼 xin310923
这是c++的标准输出流。
1