/******************************************************************** --程序描述: 实现复数的加、减、乘、除法 --修改时间: 从前写的代码不够规范——2009.6.17 --修改人: 吴强 --输入要求: 输入1为加法运算,然后输入两复数; 输入2为减法运算,然后输入两复数; 输入3为剩法运算,然后输入两复数; 输入4为除法运算,然后输入两复数; 输入5为求实部,然后输入一复数; 输入6为求虚部,然后输入一复数; ********************************************************************/ #include #include //复数类 class Plural { public: float numA; float numA_i; float numB; float numB_i; float ret; float ret_i; Plural() { numA = numA_i = numB = numB_i = ret = ret_i = 0; }; public: void addr(); //俩复数进行加法运算 void jian(); //俩复数进行减法运算 void sheng(); //俩复数进行乘法运算 void chu(); //俩复数进行除法运算 void virl() //求实部 { printf("input plural(A,Ai): "); scanf("%f,%f",&numA,&numA_i); printf("Virtual is : %f/n",numA_i); } void real() //求虚部 { printf("input plural(A,Ai): "); scanf("%f,%f",&numA,&numA_i); printf("Real is : %f/n",numA); } void OutResult(); }; //实现俩复数加法 void Plural::addr() { printf("input two plural(A,Ai;B,Bi): "); scanf("%f,%f;%f,%f", &numA, &numA_i, &numB, &numB_i); ret = numA+numB; ret_i = numA_i+numB_i; OutResult(); } //实现俩复数减法 void Plural::jian() { printf("input two plural(A,Ai;B,Bi): "); scanf("%f,%f;%f,%f", &numA, &numA_i, &numB, &numB_i); ret = numA-numB; ret_i = numA_i-numB_i; OutResult(); } //实现俩复数乘法 void Plural::sheng() { printf("input two plural(A,Ai;B,Bi): "); scanf("%f,%f;%f,%f", &numA, &numA_i, &numB, &numB_i); ret = numA*numB-numA_i*numB_i; ret_i = numA*numB_i+numA_i*numB; OutResult(); } //实现俩复数除法 void Plural::chu() { //分数表示。分别代表实部分母、分子,虚部分母、分子 float real_M; float real_Z; float vir_M; float vir_Z; printf("input two plural(A,Ai;B,Bi): "); scanf("%f,%f;%f,%f", &numA, &numA_i, &numB, &numB_i); if (0 != numB && 0 != numB_i) { real_M = numA*numB_i-numA_i*numB; real_Z = numB*numB_i; vir_M = numA*numB+numA_i*numB_i; vir_Z = numB*numB_i; printf("result is: %f/%f+(%f/%f)i/n", real_M, real_Z, vir_M, vir_Z); } else if (0 == numB) { real_M = -numA_i; real_Z = numB_i; vir_M = numA; vir_Z = numB_i; printf("result is: %f/%f+(%f/%f)i/n", real_M, real_Z, vir_M, vir_Z); } else if (0 == numB_i) { real_M = numA; real_Z = numB; vir_M = numA_i; vir_Z = numB; printf("result is: %f/%f+(%f/%f)i/n", real_M, real_Z, vir_M, vir_Z); } } //输出结果 void Plural::OutResult() { printf("Result is: "); if (0 != ret) { printf("%f", ret); } if (0 != ret && ret_i > 0) { printf("+"); } if (0 != ret_i) { printf("%fi/n", ret_i); } } void main() { int oper; Plural plu; printf("*******************/n" " 1.加法/n" " 2.减法/n" " 3.剩法/n" " 4.除法/n" " 5.求实部/n" " 6.求虚部/n" "******************/n"); printf("input operation(1~6)/n"); scanf("%d", &oper); //选择操作 switch (oper) { case 1: { plu.addr(); break; } case 2: { plu.jian(); break; } case 3: { pul.sheng(); break; } case 4: { plu.chu(); break; } case 5: { plu.virl(); break; } case 6: { plu.real(); break; } default: { printf("No operation!/n/n"); } } }
复数简单运算
最新推荐文章于 2022-08-31 22:23:33 发布