运算符重载和复数运算的一些问题 求解答

qq_38719965 2017-05-11 06:43:47
题目相关内容如下:
测试数据1 完全正确
测试数据2 输出错误
错误输出:
0+0i
期望输出:
3+i
测试数据3 输出错误
错误输出:
9+-9i
期望输出:
9-9i
测试数据4 输出错误
错误输出:
0+0i
期望输出:
i
测试数据5 输出错误
错误输出:
-1+0i
期望输出:
-1-10i

代码如下
#include<iostream>
using namespace std;
class Complex
{
double real;
double image;
public:
Complex(double r=0,double i=0)
{
real=r; image=i;
}
friend void inputcomplex(Complex &comp1,Complex &comp2);
friend Complex addcomplex(Complex c1,Complex c2);
friend void outputcomplex(Complex comp);
};
void inputcomplex(Complex &comp1,Complex &comp2)
{
char p;
cin>>comp1.real>>comp1.image>>p>>p>>comp2.real>>comp2.image>>p;
}
Complex addcomplex(Complex c1,Complex c2)
{
Complex c;
c.real=c1.real+c2.real;
c.image=c1.image+c2.image;
return c;
}
void outputcomplex(Complex comp)
{
cout<<comp.real<<"+"<<comp.image<<"i";
}
int main()
{
Complex c1,c2,result;
inputcomplex(c1,c2);
result=addcomplex(c1,c2);
outputcomplex(result);
cout<<endl;

}


求解答QAQ
...全文
335 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_38719965 2017-05-17
  • 打赏
  • 举报
回复
顶顶顶!!!
qq_38719965 2017-05-16
  • 打赏
  • 举报
回复
引用 12 楼 jianwen0529 的回复:
[quote=引用 5 楼 qq_38719965 的回复:]
[quote=引用 4 楼 jianwen0529 的回复:]

#include<iostream>
using namespace std;
class Complex
{
double real;
double image;
public:
Complex(double r = 0, double i = 0)
{
real = r; image = i;
}
friend void inputcomplex(Complex &comp1, Complex &comp2);
friend Complex addcomplex(Complex c1, Complex c2);
friend void outputcomplex(Complex comp);
};
void inputcomplex(Complex &comp1, Complex &comp2)
{
char op, p;
cin >> comp1.real >> op >> comp1.image >> p;
if (op == '-') comp1.image = -comp1.image;

cin >> comp2.real >> op >> comp2.image >> p;
if (op == '-') comp2.image = -comp2.image;
}
Complex addcomplex(Complex c1, Complex c2)
{
Complex c;
c.real = c1.real + c2.real;
c.image = c1.image + c2.image;
return c;
}
void outputcomplex(Complex comp)
{
cout << comp.real << ((comp.image >= 0) ? "+" : "") << comp.image << "i";
}
int main()
{
Complex c1, c2, result;
inputcomplex(c1, c2);
result = addcomplex(c1, c2);
outputcomplex(result);
cout << endl;

}


出现这些:
测试数据 测试结果
测试数据1 输出错误
错误输出:
1+2i
期望输出:
4+6i
测试数据2 输出错误
错误输出:
0+0i
期望输出:
3+i
测试数据3 输出错误
错误输出:
-1-9i
期望输出:
9-9i
测试数据4 输出错误
错误输出:
0+0i
期望输出:
i
测试数据5 完全正确

我该怎么办……[/quote]

因为你没给出测试数据的格式
我是按照
5+10i
40-2i
的形式输入的[/quote]
哦对 还有一个问题 就是输入1+i的时候就变成了
qq_38719965 2017-05-16
  • 打赏
  • 举报
回复
引用 12 楼 jianwen0529 的回复:
[quote=引用 5 楼 qq_38719965 的回复:] [quote=引用 4 楼 jianwen0529 的回复:]

#include<iostream>
using namespace std;
class Complex
{
    double real;
    double image;
public:
    Complex(double r = 0, double i = 0)
    {
        real = r; image = i;
    }
    friend void inputcomplex(Complex &comp1, Complex &comp2);
    friend Complex addcomplex(Complex c1, Complex c2);
    friend void outputcomplex(Complex comp);
};
void inputcomplex(Complex &comp1, Complex &comp2)
{
    char op, p;
    cin >> comp1.real >> op >> comp1.image >> p;
    if (op == '-') comp1.image = -comp1.image;

    cin >> comp2.real >> op >> comp2.image >> p;
    if (op == '-') comp2.image = -comp2.image;
}
Complex addcomplex(Complex c1, Complex c2)
{
    Complex c;
    c.real = c1.real + c2.real;
    c.image = c1.image + c2.image;
    return c;
}
void outputcomplex(Complex comp)
{
    cout << comp.real << ((comp.image >= 0) ? "+" : "") << comp.image << "i";
}
int main()
{
    Complex c1, c2, result;
    inputcomplex(c1, c2);
    result = addcomplex(c1, c2);
    outputcomplex(result);
    cout << endl;

}
出现这些: 测试数据 测试结果 测试数据1 输出错误 错误输出: 1+2i 期望输出: 4+6i 测试数据2 输出错误 错误输出: 0+0i 期望输出: 3+i 测试数据3 输出错误 错误输出: -1-9i 期望输出: 9-9i 测试数据4 输出错误 错误输出: 0+0i 期望输出: i 测试数据5 完全正确 我该怎么办……[/quote] 因为你没给出测试数据的格式 我是按照 5+10i 40-2i 的形式输入的[/quote] 哦哦 不好意思 【输入形式】1+2i,3+4i 【输出形式】4+6i 【样例输入】1+2i,3+4i 【样例输出】4+6i 求大神帮改 最近一直没上网回复晚了……
赵4老师 2017-05-12
  • 打赏
  • 举报
回复
《C++编程思想》
zhujinqiang 2017-05-12
  • 打赏
  • 举报
回复
问题是在友元的使用上面吗?
幻夢之葉 2017-05-12
  • 打赏
  • 举报
回复
引用 5 楼 qq_38719965 的回复:
[quote=引用 4 楼 jianwen0529 的回复:]

#include<iostream>
using namespace std;
class Complex
{
    double real;
    double image;
public:
    Complex(double r = 0, double i = 0)
    {
        real = r; image = i;
    }
    friend void inputcomplex(Complex &comp1, Complex &comp2);
    friend Complex addcomplex(Complex c1, Complex c2);
    friend void outputcomplex(Complex comp);
};
void inputcomplex(Complex &comp1, Complex &comp2)
{
    char op, p;
    cin >> comp1.real >> op >> comp1.image >> p;
    if (op == '-') comp1.image = -comp1.image;

    cin >> comp2.real >> op >> comp2.image >> p;
    if (op == '-') comp2.image = -comp2.image;
}
Complex addcomplex(Complex c1, Complex c2)
{
    Complex c;
    c.real = c1.real + c2.real;
    c.image = c1.image + c2.image;
    return c;
}
void outputcomplex(Complex comp)
{
    cout << comp.real << ((comp.image >= 0) ? "+" : "") << comp.image << "i";
}
int main()
{
    Complex c1, c2, result;
    inputcomplex(c1, c2);
    result = addcomplex(c1, c2);
    outputcomplex(result);
    cout << endl;

}
出现这些: 测试数据 测试结果 测试数据1 输出错误 错误输出: 1+2i 期望输出: 4+6i 测试数据2 输出错误 错误输出: 0+0i 期望输出: 3+i 测试数据3 输出错误 错误输出: -1-9i 期望输出: 9-9i 测试数据4 输出错误 错误输出: 0+0i 期望输出: i 测试数据5 完全正确 我该怎么办……[/quote] 因为你没给出测试数据的格式 我是按照 5+10i 40-2i 的形式输入的
HJ_sky 2017-05-12
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

class Complex{
double real;
double img;
public:
void complex(int r=0,int i=0){
real = r;
img = i;
}
friend void inPutComplex(Complex &comp1, Complex &comp2){
char p;
cin >> comp1.real >>p>> comp1.img >> p>>p >> comp2.real >>p>> comp2.img >> p;
}

friend Complex addcomplex(Complex c1, Complex c2){
Complex c;
c.real = c1.real + c2.real;
c.img = c1.img + c2.img;
return c;
}
friend void outPutComplex(Complex comp){
cout << comp.real << "+" << comp.img << "i" << endl;
}
};


#include<iostream>
#include"complex.cpp"
using namespace std;

int main(int argc, char argv){
Complex c1, c2, result;
inPutComplex(c1, c2);
result = addcomplex(c1, c2);
outPutComplex(result);
cout << endl;
}






没毛病啊,已经测试成功,不过改了一下

有个问题,为什么Complex类中的三个函数不用友元函数,在主函数中就无法调用,不是public吗?
qq_38753850 2017-05-12
  • 打赏
  • 举报
回复
引用 2 楼 幻夢之葉的回复:
void inputcomplex(Complex &comp1,Complex &comp2) { char p; cin>>comp1.real>>comp1.image>>p>>p>>comp2.real>>comp2.image>>p; } --------------------------------------- 是不是多了一个p?
是的是的,这样在输入的时候,需两次空格或者两次其他任意键,如果只有一次,第二个对象的数据就会有错误,结果肯定出错
qq_38753850 2017-05-12
  • 打赏
  • 举报
回复
引用 1 楼 倦怠的回复:
Complex addcomplex(Complex c1,Complex c2) { Complex c; c.real=c1.real+c2.real; c.image=c1.image+c2.image; return c; } 返回了局部变量
这个没事的,返回值得到了保存
qq_38753850 2017-05-12
  • 打赏
  • 举报
回复
你确定实现了对+的重载?
FD_2013 2017-05-11
  • 打赏
  • 举报
回复
百度关键词 c++实现的复数类
qq_38719965 2017-05-11
  • 打赏
  • 举报
回复
引用 3 楼 jianwen0529 的回复:
[quote=引用 2 楼 jianwen0529 的回复:] void inputcomplex(Complex &comp1,Complex &comp2) { char p; cin>>comp1.real>>comp1.image>>p>>p>>comp2.real>>comp2.image>>p; } --------------------------------------- 是不是多了一个p?
void outputcomplex(Complex comp) { //cout<<comp.real<<"+"<<comp.image<<"i"; cout<<comp.real<<((comp.image >= 0) ? "+" : "" )<<comp.image<<"i"; }[/quote] 并木有 好像不是这里的问题
qq_38719965 2017-05-11
  • 打赏
  • 举报
回复
引用 4 楼 jianwen0529 的回复:

#include<iostream>
using namespace std;
class Complex
{
    double real;
    double image;
public:
    Complex(double r = 0, double i = 0)
    {
        real = r; image = i;
    }
    friend void inputcomplex(Complex &comp1, Complex &comp2);
    friend Complex addcomplex(Complex c1, Complex c2);
    friend void outputcomplex(Complex comp);
};
void inputcomplex(Complex &comp1, Complex &comp2)
{
    char op, p;
    cin >> comp1.real >> op >> comp1.image >> p;
    if (op == '-') comp1.image = -comp1.image;

    cin >> comp2.real >> op >> comp2.image >> p;
    if (op == '-') comp2.image = -comp2.image;
}
Complex addcomplex(Complex c1, Complex c2)
{
    Complex c;
    c.real = c1.real + c2.real;
    c.image = c1.image + c2.image;
    return c;
}
void outputcomplex(Complex comp)
{
    cout << comp.real << ((comp.image >= 0) ? "+" : "") << comp.image << "i";
}
int main()
{
    Complex c1, c2, result;
    inputcomplex(c1, c2);
    result = addcomplex(c1, c2);
    outputcomplex(result);
    cout << endl;

}
出现这些: 测试数据 测试结果 测试数据1 输出错误 错误输出: 1+2i 期望输出: 4+6i 测试数据2 输出错误 错误输出: 0+0i 期望输出: 3+i 测试数据3 输出错误 错误输出: -1-9i 期望输出: 9-9i 测试数据4 输出错误 错误输出: 0+0i 期望输出: i 测试数据5 完全正确 我该怎么办……
幻夢之葉 2017-05-11
  • 打赏
  • 举报
回复

#include<iostream>
using namespace std;
class Complex
{
    double real;
    double image;
public:
    Complex(double r = 0, double i = 0)
    {
        real = r; image = i;
    }
    friend void inputcomplex(Complex &comp1, Complex &comp2);
    friend Complex addcomplex(Complex c1, Complex c2);
    friend void outputcomplex(Complex comp);
};
void inputcomplex(Complex &comp1, Complex &comp2)
{
    char op, p;
    cin >> comp1.real >> op >> comp1.image >> p;
    if (op == '-') comp1.image = -comp1.image;

    cin >> comp2.real >> op >> comp2.image >> p;
    if (op == '-') comp2.image = -comp2.image;
}
Complex addcomplex(Complex c1, Complex c2)
{
    Complex c;
    c.real = c1.real + c2.real;
    c.image = c1.image + c2.image;
    return c;
}
void outputcomplex(Complex comp)
{
    cout << comp.real << ((comp.image >= 0) ? "+" : "") << comp.image << "i";
}
int main()
{
    Complex c1, c2, result;
    inputcomplex(c1, c2);
    result = addcomplex(c1, c2);
    outputcomplex(result);
    cout << endl;

}
幻夢之葉 2017-05-11
  • 打赏
  • 举报
回复
引用 2 楼 jianwen0529 的回复:
void inputcomplex(Complex &comp1,Complex &comp2) { char p; cin>>comp1.real>>comp1.image>>p>>p>>comp2.real>>comp2.image>>p; } --------------------------------------- 是不是多了一个p?
void outputcomplex(Complex comp) { //cout<<comp.real<<"+"<<comp.image<<"i"; cout<<comp.real<<((comp.image >= 0) ? "+" : "" )<<comp.image<<"i"; }
幻夢之葉 2017-05-11
  • 打赏
  • 举报
回复
void inputcomplex(Complex &comp1,Complex &comp2) { char p; cin>>comp1.real>>comp1.image>>p>>p>>comp2.real>>comp2.image>>p; } --------------------------------------- 是不是多了一个p?
真相重于对错 2017-05-11
  • 打赏
  • 举报
回复
Complex addcomplex(Complex c1,Complex c2) { Complex c; c.real=c1.real+c2.real; c.image=c1.image+c2.image; return c; } 返回了局部变量

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧