设计复数库,实现基本的复数加减乘除运算。
输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按a+bi的格式在屏幕上打印结果。参加样例输入和样例输出。
注意考虑特殊情况,无法计算时输出字符串"error"。
C++
输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按a+bi的格式在屏幕上打印结果。参加样例输入和样例输出。
注意考虑特殊情况,无法计算时输出字符串"error"。
样例输入
2 4 * -3 2
样例输出
-14-8i
样例输入
3 -2 + -1 3
样例输出
2+1i
C
#include<stdio.h>
int main()
{
double a,b,c,d;
double bb=0.0;
char op;
scanf("%lf %lf %c %lf %lf",&a,&b,&op,&c,&d);
bb=c*c+d*d;
switch(op)
{
case 43:printf("%.0lf%+.0lfi\n",a+c,b+d);break;
case 45:printf("%.0lf%+.0lfi\n",a-c,b-d);break;
case 42:printf("%.0lf%+.0lfi\n",a*c-b*d,a*d+b*c);break;
case 47:{
if(bb!=0.0)
if((a*c+b*d)/bb<0&&(a*c+b*d)/bb>-1)
printf("%.1lf%+.1lfi\n",(a*c+b*d)/bb,(b*c-a*d)/bb);
else printf("%.0lf%+.0lfi\n",(a*c+b*d)/bb,(b*c-a*d)/bb);
else printf("error");
}
break;
}
return 0;
}
C++
/**************Powered by Graphene Richards**************/
//{
#define OUTPUT_PRECISION "%.2f"
#define LF_PRECISION 10
#define INT_64_MOD "%I64d"
#define UNSIGNED_64_MOD "%I64u"
#define CONTEST_EXIST 1
#define CONTEST_START_HOUR 13
#define CONTEST_START_MIN 0
#define CONTEST_DUR_HOUR 4
#define CONTEST_DUR_MIN 0
//#pragma comment(linker,"/STACK:102400000,102400000")
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<bitset>
#include<complex>
#include<vector>
#include<iomanip>
#include<iostream>
#include<list>
#include<map>
#include<queue>
#include<set>
#include<stack>
#include<string>
#include<typeinfo>
#define FAST_RW ios_base::sync_with_stdio(0),cin.tie(0);
#define IT(x) __typeof((x).begin())
#define FS(i,a) for(ll i=0;a[i];i++)
#define FE(x,ctn) for(IT(ctn)x=(ctn).begin(),CluhxSchFuDeugk=(ctn).end();x!=CluhxSchFuDeugk;x++)
#define FR(i,en) for(ll i=0,pJNwFPtlXiwFoIv=(en);i<pJNwFPtlXiwFoIv;i++)
#define FOR(i,en) for(ll i=1,SbKCIcakJTeYVqs=(en);i<=SbKCIcakJTeYVqs;i++)
#define FFR(i,x,y) for(ll i=(x),alVDbhLBoMEGSwA=(y);i<=alVDbhLBoMEGSwA;i++)
#define DFFR(i,x,y) for(ll i=(x),NWYfecAcmGBMJuU=(y);i>=NWYfecAcmGBMJuU;i--)
#define ll long long
#define ull unsigned long long
#define lf long double
#define pc putchar
#define mp make_pair
#define pb push_back
#define pq priority_queue
#define fi first
#define se second
#define pii pair<int,int>
#define pdd pair<double,double>
#define lb(x) (x&(-x))
#define sqr(x) (x)*(x)
#define all(x) (x).begin(),(x).end()
#define clr(x) memset((x),0,sizeof(x))
#define ms(x,v) memset((x),(v),sizeof(x))
#define NL puts("");
using namespace std;
template<class T1,class T2,class T3>
bool _IN(T1 x,T2 y,T3 z){
return x<=y&&x>=z||x<=z&&x>=y;
}
ull gcd(ull a,ull b){
if(!b)return a;
while(b^=a^=b^=a%=b);
return a;
}
#ifdef wmx16835
#include<ctime>
#include<conio.h>
#include<windows.h>
#define GREEN 10
#define BLUE 11
#define RED 12
#define PINK 13
#define YELLOW 14
#define WHITE 15
struct TM{
int t;
TM(int a,int b,int c):t(a*3600+b*60+c){}
TM(int x):t(x){}
TM(){}
operator int(){return t;}
void print(){
printf("%02d:%02d:%02d",t/3600%24,t/60%60,t%60);
}
};
void OVZmetNNpAqAVZx(){
time_t t=time(0);
srand(t);
tm*p=localtime(&t);
TM day(24,0,0),cur(p->tm_hour,p->tm_min,p->tm_sec),beg(CONTEST_START_HOUR,CONTEST_START_MIN,0),len(CONTEST_DUR_HOUR,CONTEST_DUR_MIN,0),en(beg+len),fen(beg+en+day>>1),seg;
if(beg>cur)cur.t+=day;
puts(" +--------------------------+");
if(_IN(cur,beg,en)&&CONTEST_EXIST){
puts(" | Status: Running |");
printf(" | Progress: %5.1f %% |\n",(double)(cur-beg)/len*100);
seg.t=en-cur;
printf(" | Remaining time: ");
seg.print();
puts(" |");
}
else{
printf(" | Current time: ");
cur.print();
puts(" | ");
if(cur<=fen||!CONTEST_EXIST)
puts(" | Status: Ended |");
else{
puts(" | Status: Scheduled |");
cur.t-=day;
seg.t=beg-cur;
printf(" | Remaining time: ");
seg.print();
puts(" |");
}
}
puts(" +--------------------------+");
puts("................................\n");
}
const HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
void _COLOR(unsigned x=BLUE){
SetConsoleTextAttribute(hout,x);
}
void pCJUYxWEXKaDOIC(){
int num=1;
FILE*p=fopen("FILE_NAME","r");
if(p){
fscanf(p,"%d",&num);
fclose(p);
}
char f_name[1024];
sprintf(f_name,"%d.out",num++);
_COLOR(PINK);
printf("[NOTICE] Standard output has been redirected to \"%s\".\n",f_name);
_COLOR();
freopen(f_name,"w",stdout);
if(!stdout)
exit(1);
else
p=fopen("FILE_NAME","w");
if(p){
fprintf(p,"%d",num);
fclose(p);
}
}
int bXMXqqguPAUDCia;
void FrKZgXsfpPVkeNv(){
char x[1000];
sprintf(x,"[Paused: %d]",++bXMXqqguPAUDCia);
int len=strlen(x);
printf(x);
getch();
FR(i,len)pc('\b');
FR(i,len)pc(' ');
FR(i,len)pc('\b');
}
#define LOG {_COLOR(RED);unsigned ijqQjAZZNYpJYBe=clock();puts("\n----------------------");_COLOR();
#define TEL _COLOR(RED),printf("\n----------------------\nExecution time: %ums\n----------------------\n",clock()-ijqQjAZZNYpJYBe);_COLOR();}
#define SHOW_TIME {_COLOR(GREEN);OVZmetNNpAqAVZx();_COLOR();}
#define test(...) _COLOR(YELLOW),printf(__VA_ARGS__),_COLOR()
#define TEST(x) _COLOR(YELLOW),printf("%s = ",#x),_P(x),puts(""),_COLOR()
#define TRY(...) {__VA_ARGS__}
#define PF pCJUYxWEXKaDOIC();
#define PP {_COLOR(RED);FrKZgXsfpPVkeNv();_COLOR();}
#else
int ebtpqJsBCnTgggi;
#define LOG {
#define TEL }
#define SHOW_TIME
#define test(...) ebtpqJsBCnTgggi
#define TEST(...) ebtpqJsBCnTgggi
#define TRY(...)
#define PF
#define PP ;
#endif
int S(char*a){
return scanf("%s",a)==1;
}
template<class T>
int S(T&a){
const char*x=typeid(a).name();
if(!strcmp(x,"i")||!strcmp(x,"b"))return scanf("%d",&a)==1;
else if(!strcmp(x,"j"))return scanf("%u",&a)==1;
else if(!strcmp(x,"c"))return scanf("%c",&a)==1;
else if(!strcmp(x,"Pc")||*x=='A')return scanf("%s",a)==1;
else if(!strcmp(x,"f"))return scanf("%f",&a)==1;
else if(!strcmp(x,"d"))return scanf("%lf",&a)==1;
else if(!strcmp(x,"x"))return scanf(INT_64_MOD,&a)==1;
else if(!strcmp(x,"y"))return scanf(UNSIGNED_64_MOD,&a)==1;
else if(!strcmp(x,"e"))return (cin>>a)!=0;
else test("Input format error!\n");
}
template<class T>
void _P(T a){
const char*x=typeid(a).name();
if(!strcmp(x,"i")||!strcmp(x,"b"))printf("%d",a);
else if(!strcmp(x,"j"))printf("%u",a);
else if(!strcmp(x,"c"))printf("%c",a);
else if(!strcmp(x,"Pc")||!strcmp(x,"PKc")||*x=='A')printf("%s",a);
else if(!strcmp(x,"d")||!strcmp(x,"f"))printf(OUTPUT_PRECISION,a);
else if(!strcmp(x,"x"))printf(INT_64_MOD,a);
else if(!strcmp(x,"y"))printf(UNSIGNED_64_MOD,a);
else if(!strcmp(x,"e"))cout<<setprecision(LF_PRECISION)<<a;
else test("Output format error!\n");
}
template<class T1,class T2>
int S(T1&a,T2&b){
return S(a)+S(b)==2;
}
template<class T1,class T2,class T3>
int S(T1&a,T2&b,T3&c){
return S(a)+S(b)+S(c)==3;
}
template<class T1,class T2,class T3,class T4>
int S(T1&a,T2&b,T3&c,T4&d){
return S(a)+S(b)+S(c)+S(d)==4;
}
template<class T1,class T2,class T3,class T4,class T5>
int S(T1&a,T2&b,T3&c,T4&d,T5&e){
return S(a)+S(b)+S(c)+S(d)+S(e)==5;
}
template<class T>
void P(T a){
_P(a);
pc(' ');
}
template<class T1,class T2>
void P(T1 a,T2 b){
_P(a);pc(' ');
_P(b);pc(' ');
}
template<class T>
void PN(T a){
_P(a);
NL
}
template<class T1,class T2>
void PN(T1 a,T2 b){
_P(a);pc(' ');
_P(b);NL
}
template<class T1,class T2,class T3>
void PN(T1 a,T2 b,T3 c){
_P(a);pc(' ');
_P(b);pc(' ');
_P(c);NL
}
template<class T1,class T2,class T3,class T4>
void PN(T1 a,T2 b,T3 c,T4 d){
_P(a);pc(' ');
_P(b);pc(' ');
_P(c);pc(' ');
_P(d);NL
}
template<class T1,class T2,class T3,class T4,class T5>
void PN(T1 a,T2 b,T3 c,T4 d,T5 e){
_P(a);pc(' ');
_P(b);pc(' ');
_P(c);pc(' ');
_P(d);pc(' ');
_P(e);NL
}
template<class T>
void PA(T*a,int n){
FR(i,n-1)P(a[i]);
PN(a[n-1]);
}
template<class T>
void PA(const T&x){
IT(x) ita=x.begin();
FE(it,x){
_P(*it);
if(++ita==x.end())NL
else pc(' ');
}
}
int kase;
const double pi=4*atan(1);
const double ep=1e-9;
//}
struct cp{
double s,x;
bool v;
void in(){
S(s,x);
v=1;
}
cp operator+(const cp&r){
return {s+r.s,x+r.x,1};
}
cp operator-(const cp&r){
return {s-r.s,x-r.x,1};
}
cp operator*(const cp&r){
return {s*r.s-x*r.x,s*r.x+x*r.s,1};
}
cp operator/(const cp&r){
if(r.s==0&&r.x==0)return {0,0,0};
return {(s*r.s+x*r.x)/(sqr(r.s)+sqr(r.x)),(-s*r.x+x*r.s)/(sqr(r.s)+sqr(r.x)),1};
}
void out(){
if(v)
cout<<s<<(x<0?'-':'+')<<abs(x)<<'i';
else
puts("error");
}
};
char bf[5];
int main(){
SHOW_TIME
cp a,b;
a.in();
S(bf);
b.in();
if(*bf=='+')a=a+b;
if(*bf=='-')a=a-b;
if(*bf=='*')a=a*b;
if(*bf=='/')a=a/b;
a.out();
}
/*********Risoft corporation all rights reserved*********/
/**************Template V1.40 build 20150122*************/