复数的运算

  1 #include<iostream>
  2 #include<stdio.h>
  3 #include <algorithm>
  4 #include<string.h>
  5 using namespace std;
  6 class complex
  7 {
  8 private:
  9     int i,a,b,c,d,j,m,mark[2],w,flog;
 10     float e,f;
 11     char x[10],y[10],ax;
 12 public:
 13     void cint()
 14     {
 15        cout<<"输入第一个数"<<endl;
 16        scanf("%s",x);
 17        cout<<"输入运算符"<<endl;
 18        cin>>ax;
 19        cout<<"输入第二个数"<<endl;
 20        scanf("%s",y);
 21     }
 22     int nxh(int x)
 23     {
 24         int p,sum;
 25         for(p=0,sum=1;p<x;p++)
 26             sum=sum*10;
 27         return sum;
 28     }
 29     void cpucin()
 30     {
 31         int n,l,ql;
 32         for(l=1,ql=1,j=0,m=0,flog=0,n=0;j<strlen(x);j++)
 33         {
 34             if(x[0]==‘-‘) ql=-1;
 35             if(x[j]==‘+‘) m=j;
 36             if(x[j]==‘i‘) n=j;
 37             if(x[j]==‘-‘&&j!=0)
 38             {
 39                 m=j;
 40                 l=-1;
 41             }
 42
 43
 44         }
 45         if(m==0)
 46         {
 47             if(n==0)
 48             {
 49                 m=strlen(x);
 50                 flog=1;
 51             }
 52             else flog=2;
 53         }
 54         if(flog==0||flog==1)
 55         {
 56             if(ql==1) j=0;
 57             else j=1;
 58             for(a=0;j<m;j++)
 59             {
 60                 a+=(x[j]-‘0‘)*nxh(m-j-1);
 61             }
 62             a=a*ql;
 63         }
 64         if(flog==0||flog==2)
 65         {
 66             if(flog==0) j=m+1;
 67             if(flog==2&&ql==1) j=m;
 68             else j=m+1;
 69             for(b=0;j<strlen(x)-1;j++)
 70                 b+=(x[j]-‘0‘)*nxh(strlen(x)-2-j);
 71             if(a==0) b=b*ql;
 72             else b=b*l;
 73         }
 74         else b=0;
 75        for(l=1,ql=1,j=0,m=0,flog=0,n=0;j<strlen(y);j++)
 76         {
 77             if(y[0]==‘-‘) ql=-1;
 78             if(y[j]==‘+‘) m=j;
 79             if(y[j]==‘i‘) n=j;
 80             if(y[j]==‘-‘&&j!=0)
 81             {
 82                 m=j;
 83                 l=-1;
 84             }
 85
 86
 87         }
 88         if(m==0)
 89         {
 90             if(n==0)
 91             {
 92                 m=strlen(y);
 93                 flog=1;
 94             }
 95             else flog=2;
 96         }
 97         if(flog==0||flog==1)
 98         {
 99             if(ql==1) j=0;
100             else j=1;
101             for(c=0;j<m;j++)
102             {
103                 c+=(y[j]-‘0‘)*nxh(m-j-1);
104             }
105             c=c*ql;
106         }
107         if(flog==0||flog==2)
108         {
109             if(flog==0) j=m+1;
110             if(flog==2&&ql==1) j=m;
111             else j=m+1;
112             for(d=0;j<strlen(y)-1;j++)
113                 d+=(y[j]-‘0‘)*nxh(strlen(y)-2-j);
114             if(c==0) d=d*ql;
115             else d=d*l;
116
117
118         }
119         else d=0;
120     }
121     void scpu()
122     {
123         if(ax==‘+‘) jiafa();
124         if(ax==‘-‘) jianfa();
125         if(ax==‘*‘) chengfa();
126         if(ax==‘/‘) chufa();
127     }
128     void jiafa()
129     {
130         e=a+c;
131         f=b+d;
132     }
133     void jianfa()
134     {
135         e=a-c;
136         f=b-d;
137     }
138     void chengfa()
139     {
140         e=a*c-b*d;
141         f=a*d+c*b;
142     }
143     void chufa()
144     {
145         e=(a*c+b*d)/(c*c-d*d);
146         f=(b*c-a*d)/(c*c-d*d);
147     }
148     void cput()
149     {
150         if(f>0&&e!=0)
151         cout<<e<<‘+‘<<f<<‘i‘<<endl;
152         if(f==0&&e==0)
153         cout<<0<<endl;
154         if(e==0&&f!=0)
155         cout<<f<<‘i‘<<endl;
156         if(e!=0&&f==0)
157             cout<<e<<endl;
158         if(e!=0&&f<0)
159             cout<<e<<f<<‘i‘<<endl;
160
161
162     }
163
164
165
166 } x1;
167 int main()
168 {
169     x1.cint();
170     x1.cpucin();
171     x1.scpu();
172     x1.cput();
173     system("pause");
174     return 0;
175 }
时间: 2024-10-31 00:00:36

复数的运算的相关文章

算法提高 6-17复数四则运算

时间限制:1.0s   内存限制:512.0MB 设计复数库,实现基本的复数加减乘除运算. 输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔:输出时按a+bi的格式在屏幕上打印结果.参加样例输入和样例输出. 注意考虑特殊情况,无法计算时输出字符串"error". 样例输入 2 4 * -3 2 样例输出 -14-8i 样例输入 3 -2 + -1 3 样例输出 2+1i 有一组数据就是通不过. #include <iostream> #include &l

【C++】复数的运算符重载

运算符重载的定义: 用户对于自定义类型的运算操作,例如复数的运算.需要重新定义运算符号(创建函数). 除了类属关系运算符".".成员指针运算符".*".作用域运算符"::".sizeof运算符和三目运算符"?:"以外,C++中的所有运算符都可以重载. 复数的运算符重载如下: <span style="font-size:18px;"> #include<iostream> #incl

蓝桥杯 算法提高 6-17 复数四则运算

算法提高 6-17复数四则运算 时间限制:1.0s   内存限制:512.0MB 设计复数库,实现基本的复数加减乘除运算. 输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔:输出时按a+bi的格式在屏幕上打印结果.参加样例输入和样例输出. 注意考虑特殊情况,无法计算时输出字符串"error". 样例输入 2 4 * -3 2 样例输出 -14-8i 样例输入 3 -2 + -1 3 样例输出 2+1i 1 #include<iostream> 2 #inc

复数类

实现复数类的基本成员函数,复数之间比较大小以及复数的四则运算. 设z1 = a + bi,z2 = c + di(a.b.c.d∈R)是任意两个复数, 复数乘法: (a + bi)(c + di) = (ac - bd) + (bc + ad)i. 复数除法: (a + bi) / (c + di) = (ac + bd) / (c ^ 2 + d ^ 2) + (bc - ad) / (c ^ 2 + d ^ 2)i. 代码如下: #define _CRT_SECURE_NO_WARNINGS

算法笔记_156:算法提高 6-17复数四则运算(Java)

目录 1 问题描述 2 解决方案   1 问题描述 设计复数库,实现基本的复数加减乘除运算. 输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔:输出时按a+bi的格式在屏幕上打印结果.参加样例输入和样例输出. 注意考虑特殊情况,无法计算时输出字符串"error". 样例输入 2 4 * -3 2 样例输出 -14-8i 样例输入 3 -2 + -1 3 样例输出 2+1i 2 解决方案 此题判断错误主要在除法运算上,除法运算有可能获得小数,所以在获取输入数字时,就得用

c++简单复数计算器

1.有关计算器的功能 A,实现多个复数(包括实数)的加减乘除,大小比较, B.实现十进制实数的进制转换,可以转换任意进制 2.有关设计的原理 A.复数计算的部分,采用运算符的重载,进行复数的加减乘除以及大小比较 对于输入输出,(>>和<<),加减乘除运算进行重载. 输入的重载,实现a+bi形式的复数的输入. 输出的重载,实现实数的输出(实现特殊的只输出实部虚部之类的). 加减乘除的重载,实现有关复数的运算. B.进制转换的部分,采用进制转换的方法,实现10进制的任意进制转换.辗转相

6-17复数四则运算 --- 蓝桥杯

设计复数库,实现基本的复数加减乘除运算. 输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔:输出时按a+bi的格式在屏幕上打印结果.参加样例输入和样例输出. 注意考虑特殊情况,无法计算时输出字符串"error". 样例输入 2 4 * -3 2 样例输出 -14-8i 样例输入 3 -2 + -1 3 样例输出 2+1i 解题分析: 复数运算法则 http://baike.baidu.com/link?url=i7MKOzPCWS-sN0-NEuy_4kVejT1TZ

FFT &amp;&amp; 复数重载

复数重载 与 FFT 1.复数重载: 重载了复数的运算,即重载了复数的加减乘以及赋初值. struct Complex{ //复数的重载 double r,i; IL Complex(){r = 0; i = 0;} IL Complex(RG double a,RG double b){r = a; i = b;} IL Complex operator +(Complex B){ return Complex(r+B.r,i+B.i); } IL Complex operator -(Com

Julia - 复数

全局变量 im 即复数 i ,为复数的虚数单位,表示 -1 的正平方根 Julia 允许数值作为代数系数,这也适用于复数 julia> 1 + 2im 1 + 2im 复数的运算 julia> (1 + 2im) + (2 - 3im) 3 - 1im julia> (1 + 2im) - (2 - 3im) -1 + 5im julia> (1 + 2im) * (2 - 3im) 8 + 1im julia> (1 + 2im) / (2 - 3im) -0.307692