运算符重载-复数的加法
来源:互联网 发布:钓鱼王vb强食剂 编辑:程序博客网 时间:2024/05/17 04:20
#include<iostream>#include<cstdio>#include<string>#include<cmath>#include<cstring>#include<cstdlib>using namespace std;class Complex {public: Complex (int r=0, int i=0) : m_r (r), m_i (i) {} const Complex operator+ (const Complex& c) const { return Complex (m_r + c.m_r, m_i + c.m_i); } void print (void) const { if(m_i == 0) cout << m_r; else if(m_i == 1 && m_r == 0) cout << 'i'; else if(m_i == -1 && m_r == 0) cout<< '-' << 'i'; else if(m_r != 0 && m_i == 1) cout << m_r << '+' << 'i'; else if(m_r != 0 && m_i == -1) cout << m_r << '-' << 'i'; else if(m_r != 0 && m_i > 1) cout << m_r << '+' << m_i << 'i'; } private: int m_r; // 实部 int m_i; // 虚部};void fun(string s,int &r,int &i){ int j; r = i = 0; char buf[256]; int len = s.length(); int signPos = -1, // +/-号位置 iPos = -1; // 结尾的i的位置 for (j = len-1; j >-1; j--) { if ('i' == s[j]) iPos = j; else if ('+' == s[j] || '-' == s[j]) { signPos = j; break; } } if (0 == iPos) // 纯虚数i { r = 0; i = 1; } else if (0 < iPos) // 复数 { // 实部 if (0 < signPos) { for(j = 0;j < signPos;++j) { r = r*10 + s[j] - '0'; } } // 虚部 if (signPos + 1 == iPos) // 虚数部分 = -i / +i i = '+' == s[signPos] ? 1 : -1; else { for(j = signPos+1;j < len-1;++j) { i = i*10 + s[j] - '0'; } } } else // 纯实数 { for(j = 0;j < len;++j) { r = r*10 + s[j] - '0'; } } /* for(j = 0;j < len;++j) { if(s[j] == '+') break; r = r*10 + s[j] - '0'; } for(++j;j < len;++j) { if(s[j] == 'i') { if(i == 0) i = 1; break; } i = i*10 + s[j] - '0'; }*/}int main () { int r,i; string s; cin >> s; fun(s,r,i); Complex t(r,i); while(true) { cin >> s; if(s == "0") break; fun(s,r,i); Complex c1(r,i); t = t+c1; } t.print(); return 0;}
0 0
- 运算符重载-复数的加法
- 使用运算符重载实现复数的加法运算
- 复数运算符的重载
- C++复数运算的运算符重载
- C++运算符重载----复数的运算
- 复数运算符重载
- 复数运算符重载
- C++实现的复数运算符重载
- 实现复数类的运算符重载
- 对复数进行的+-*/运算符重载
- 复数的运算符重载1
- 复数类中运算符的重载
- 复数类的运算符重载
- 实现复数类的运算符重载
- 复数类加减乘除的运算符重载
- 复数的运算符重载----成员函数
- [c++]复数的运算符重载
- 【C++】复数的运算符重载
- 做了一点点蓝桥杯真题
- 1022 覆盖
- 杭电oj(Java版)——1874 畅通工程续 最短路径问题 Duskjstra算法
- C语言~size_t详解
- POJ 1154 LETTERS 笔记
- 运算符重载-复数的加法
- POJ 1651 Multiplication Puzzle【区间dp】
- AMD和CMD的区别
- iOS微信支付接入
- (22)内容浏览器之移植资源
- grunt构建&文件合并与压缩
- bonjour代理获取多个服务的方式
- itchat4j -- 用Java扩展个人微信号的能力
- 事务的传播行为