• 复数的运算


      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 }
  • 相关阅读:
    类成员函数的重载、覆盖和隐藏区别 (C++)(转)
    man时括号里的数字是啥意思
    Redis事务
    功能接口
    持久化方式
    宿主
    路由
    静态文件
    Log4Net 配置
    Redis命令与配置
  • 原文地址:https://www.cnblogs.com/Tree-dream/p/5333997.html
Copyright © 2020-2023  润新知