gpt4 book ai didi

c++ - 如何在类/对象C++中使用复数

转载 作者:行者123 更新时间:2023-12-02 10:04:59 26 4
gpt4 key购买 nike

我正在努力在我的代码中实现复数。当我编译时,它会给我随机数。它应该使用虚数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();
}

或者使用现有的解决方案(例如std::complex),而不是尝试自己编程。以所需的形状(r + i * I)输出它们不需要自己实现整个过程。
查看 https://en.cppreference.com/w/cpp/numeric/complex以了解其提供的内容。

关于c++ - 如何在类/对象C++中使用复数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60620462/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com