作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力在我的代码中实现复数。当我编译时,它会给我随机数。它应该使用虚数i = sqrt(-1)。它应该输出realPart + imaginaryPart * i。
#include <iostream>
#include <complex>
using namespace std;
class Complex
{
private:
double i;
complex<double> imaginarypart = i*sqrt(1);
double realpart;
public:
void seti(double a1) {
i = a1;
}
void setrealpart(double a2) {
realpart = a2;
}
void printwhole() {
cout << realpart + imaginarypart;
}
};
int main()
{
double a, b;
cout << "Enter your realpart" << endl;
cin >> a;
cout << "Enter your imaginarypart " << endl;
cin >> b;
Complex num1;
num1.seti(b);
num1.setrealpart(a);
cout << endl;
num1.printwhole();
}
最佳答案
关键是double类型不能存储虚值。
但是您尝试这样做,例如与sqrt(1);
(尽管您可能表示-1)。complex<double>
确实能够存储虚数值,但是,一方面,通过将未初始化的i
的乘积赋值为1,它将无法工作;另一方面,您似乎试图自己实现复数。使用所提供的复杂标准类型在某种程度上不能解决问题。如果使用它,则只需要学习以所需格式输出它,而不需要完成所有实现工作。
让我们假设您对自己先完成工作更有兴趣。
您需要做的是始终将复数表示为两个数字。
因此,我建议像这样更改您的代码。
#include <iostream>
using namespace std;
class Complex
{
private:
/* double i; Won't work, it cannot store imaginary values. */
double imaginarypart;
double realpart;
public:
void setimaginarypart(double a1) {
imaginarypart = a1;
}
void setrealpart(double a2) {
realpart = a2;
}
void printwhole() {
cout << realpart << '+' << imaginarypart << 'i'; // To get the output you want.
}
};
int main()
{
double a, b;
cout << "Enter your realpart" << endl;
cin >> a;
cout << "Enter your imaginarypart " << endl;
cin >> b;
Complex num1;
num1.setimaginarypart(b);
num1.setrealpart(a);
cout << endl;
num1.printwhole();
}
关于c++ - 如何在类/对象C++中使用复数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60620462/
我是一名优秀的程序员,十分优秀!