大佬教程收集整理的这篇文章主要介绍了PTA 1051 复数乘法 (15 分) C++实现,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i^2 = −1;也可以写成极坐标下的指数形式 (R×e(Pi) ),其中 R 是复数模,P 是辐角,i 是虚数单位,其等价于三角形式 R(cos[P])+isin[P])。
现给定两个复数的 R 和 P,要求输出两数乘积的常规形式。
输入在一行中依次给出两个复数的 R1, P1, R2, P2,数字间以空格分隔。
在一行中按照 A+Bi 的格式输出两数乘积的常规形式,实部和虚部均保留 2 位小数。注意:如果 B 是负数,则应该写成 A-|B|i 的形式。
2.3 3.5 5.2 0.4
-8.68-8.23i
模拟即可,只是对于这种类型的题,精度的控制就始终是个谜,本题有两种处理,结果并不相同,如果采用一般处理,则最后一个测试点过不了
#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include <algorithm>
#include <iomanip>
#include <vector>
#include <string>
#include <cmath>
#include <numeric>
#include <deque>
#include <map>
using namespace std;
int main()
{
double r1, p1, r2, p2;
cin >> r1 >> p1 >> r2 >> p2;
double a1 = r1 * cosf(p1);
double b1 = r1 * sinf(p1);
double a2 = r2 * cosf(p2);
double b2 = r2 * sinf(p2);
double A = a1 * a2 - b1 * b2; //实部
double B = a1 * b2 + b1 * a2; //虚部
//输出一般处理
printf("%.2f", A);
if (B > 0)
{
cout << "+";
}
printf("%.2f", B);
cout << "i" << endl;
}
#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include <algorithm>
#include <iomanip>
#include <vector>
#include <string>
#include <cmath>
#include <numeric>
#include <deque>
#include <map>
using namespace std;
int main()
{
long double r1, p1, r2, p2;
cin >> r1 >> p1 >> r2 >> p2;
long double a1 = r1 * cosl(p1);
long double b1 = r1 * sinl(p1);
long double a2 = r2 * cosl(p2);
long double b2 = r2 * sinl(p2);
double A = a1 * a2 - b1 * b2; //实部
double B = a1 * b2 + b1 * a2; //虚部
//输出特殊处理
if (A + 0.005 >= 0 && A < 0)
{
printf("0.00");
}
else
{
printf("%.2f", A);
}
if (B >= 0)
{
printf("+%.2fi", B);
}
else if (B + 0.005 >= 0 && B < 0)
{
printf("+0.00i");
}
else
{
printf("%.2fi", B);
}
}
以上是大佬教程为你收集整理的PTA 1051 复数乘法 (15 分) C++实现全部内容,希望文章能够帮你解决PTA 1051 复数乘法 (15 分) C++实现所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。