vlambda博客
学习文章列表

复数的反三角函数计算程序(复数以通用书写格式输入、输出)

C

#include<stdio.h>#include<stdlib.h>#include<math.h>#include<complex.h>complex double z;void Input(){ double*p=(double*)&z; scanf("%lg",p); switch(getchar()) { case'-':ungetc('-',stdin);        case'+':scanf("%lgi",p+1); break;        case'i':1[p]=0[p]; 0[p]=0; }}void Output(complex double z){ double*p=(double*)&z; if(0[p]!=0&&1[p]!=0) printf("%.16G%+.16Gi\n",z); if(0[p]!=0&&1[p]==0) printf("%.16G\n",0[p]); if(0[p]==0&&1[p]!=0) printf("%.16Gi\n",1[p]); if(0[p]==0&&1[p]==0) printf("0\n");}int main(){ for(;;) { system("Cls"); printf("① arcsin(z)\n② arcsec(z)\n③ arccos(z)\n④ arccsc(z)\n⑤ arctan(z)\n⑥ arccot(z)\n请选择:"); switch(getchar()) { case'1':system("Cls"); printf("z = "); Input(); printf("arcsin(z) = "); Output(casin(z)); return EXIT_SUCCESS;                case'2':system("Cls"); printf("z = "); Input(); printf("arcsec(z) = "); Output(cacos(1/z)); return EXIT_SUCCESS; //arcsec(0)结果不定。 case'3':system("Cls"); printf("z = "); Input(); printf("arccos(z) = "); Output(cacos(z)); return EXIT_SUCCESS;                case'4':system("Cls"); printf("z = "); Input(); printf("arccsc(z) = "); Output(casin(1/z)); return EXIT_SUCCESS; //arccsc(0)结果不定。 case'5':system("Cls"); printf("z = "); Input(); printf("arctan(z) = "); Output(catan(z)); return EXIT_SUCCESS;                case'6':system("Cls"); printf("z = "); Input(); printf("arccot(z) = "); Output(3.1415926535897932384626433832795/2-catan(z)); return EXIT_SUCCESS; } }}

#include<stdio.h>#include<stdlib.h>#include<tgmath.h>complex double z;void Input(){ double*p=(double*)&z; scanf("%lg",p); switch(getchar()) { case'-':ungetc('-',stdin);        case'+':scanf("%lgi",p+1); break;        case'i':1[p]=0[p]; 0[p]=0; }}void Output(complex double z){ double*p=(double*)&z; if(0[p]!=0&&1[p]!=0) printf("%.16G%+.16Gi\n",z); if(0[p]!=0&&1[p]==0) printf("%.16G\n",0[p]); if(0[p]==0&&1[p]!=0) printf("%.16Gi\n",1[p]); if(0[p]==0&&1[p]==0) printf("0\n");}int main(){ for(;;) { system("Cls"); printf("① arcsin(z)\n② arcsec(z)\n③ arccos(z)\n④ arccsc(z)\n⑤ arctan(z)\n⑥ arccot(z)\n请选择:"); switch(getchar()) { case'1':system("Cls"); printf("z = "); Input(); printf("arcsin(z) = "); Output(asin(z)); return EXIT_SUCCESS;                case'2':system("Cls"); printf("z = "); Input(); printf("arcsec(z) = "); Output(acos(1/z)); return EXIT_SUCCESS; //arcsec(0)结果不定。 case'3':system("Cls"); printf("z = "); Input(); printf("arccos(z) = "); Output(acos(z)); return EXIT_SUCCESS;                case'4':system("Cls"); printf("z = "); Input(); printf("arccsc(z) = "); Output(asin(1/z)); return EXIT_SUCCESS; //arccsc(0)结果不定。 case'5':system("Cls"); printf("z = "); Input(); printf("arctan(z) = "); Output(atan(z)); return EXIT_SUCCESS;                case'6':system("Cls"); printf("z = "); Input(); printf("arccot(z) = "); Output(3.1415926535897932384626433832795/2-atan(z)); return EXIT_SUCCESS; } }}

C++

#include<iostream>#include<iomanip>#include<cstdlib>#include<cmath>#include<complex>using namespace std;complex<double>z;void Input(){ double*p=reinterpret_cast<double*>(&z); cin>>0[p]; switch(cin.peek()) { case'+':        case'-':cin>>1[p]; break;        case'i':1[p]=0[p]; 0[p]=0; }}void Output(complex<double>z){ cout<<setprecision(16)<<uppercase; if(z.real()!=0&&z.imag()!=0) cout<<z.real()<<showpos<<z.imag()<<"i\n"; if(z.real()!=0&&z.imag()==0) cout<<z.real()<<'\n'; if(z.real()==0&&z.imag()!=0) cout<<z.imag()<<"i\n"; if(z.real()==0&&z.imag()==0) cout<<"0\n";}int main(){ for(;;) { system("Cls"); cout<<"① arcsin(z)\n② arcsec(z)\n③ arccos(z)\n④ arccsc(z)\n⑤ arctan(z)\n⑥ arccot(z)\n请选择:"; switch(cin.get()) { case'1':system("Cls"); cout<<"z = "; Input(); cout<<"arcsin(z) = "; Output(asin(z)); return EXIT_SUCCESS;                case'2':system("Cls"); cout<<"z = "; Input(); cout<<"arcsec(z) = "; Output(acos(1./z)); return EXIT_SUCCESS; //arcsec(0)结果不定。 case'3':system("Cls"); cout<<"z = "; Input(); cout<<"arccos(z) = "; Output(acos(z)); return EXIT_SUCCESS;                case'4':system("Cls"); cout<<"z = "; Input(); cout<<"arccsc(z) = "; Output(asin(1./z)); return EXIT_SUCCESS; //arccsc(0)结果不定。 case'5':system("Cls"); cout<<"z = "; Input(); cout<<"arctan(z) = "; Output(atan(z)); return EXIT_SUCCESS;                case'6':system("Cls"); cout<<"z = "; Input(); cout<<"arccot(z) = "; Output(3.1415926535897932384626433832795/2-atan(z)); return EXIT_SUCCESS; } }}

Perl

use Math::Trig;for($l=1;$l;){ system "Cls"; print "① arcsin(z)\n", "② arcsec(z)\n", "③ arccos(z)\n", "④ arccsc(z)\n", "⑤ arctan(z)\n", "⑥ arccot(z)\n", "请选择:"; chomp($o=<STDIN>); if($o==1) { system "Cls"; print "z = "; chomp($_=<STDIN>); $z=Math::Complex->make($_); print "arcsin(z) = ",asin($z),"\n"; $l=0; } if($o==2) { system "Cls"; print "z = "; chomp($_=<STDIN>); $z=Math::Complex->make($_); if($z!=0) { print "arcsec(z) = ",asec($z),"\n"; } else { print "arcsec(z) = NAN+NANi\n"; } $l=0; } if($o==3) { system "Cls"; print "z = "; chomp($_=<STDIN>); $z=Math::Complex->make($_); print "arccos(z) = ",acos($z),"\n"; $l=0; } if($o==4) { system "Cls"; print "z = "; chomp($_=<STDIN>); $z=Math::Complex->make($_); if($z!=0) { print "arccsc(z) = ",acsc($z),"\n"; } else { print "arccsc(z) = NAN+NANi\n"; } $l=0; } if($o==5) { system "Cls"; print "z = "; chomp($_=<STDIN>); $z=Math::Complex->make($_); print "arctan(z) = ",atan($z),"\n"; $l=0; } if($o==6) { system "Cls"; print "z = "; chomp($_=<STDIN>); $z=Math::Complex->make($_); print "arccot(z) = ",3.1415926535897932384626433832795/2-atan($z),"\n"; $l=0; } #此处不直接用库函数acot($z)是因为它被定义为了atan(1/$z)。}

Forse altri canterà con miglior plettro.