gpt4 book ai didi

c++ - 中的复数

转载 作者:太空宇宙 更新时间:2023-11-04 11:25:14 27 4
gpt4 key购买 nike

我正在研究结构,在下面的代码中,我的老师创建了一个复数结构(由两部分组成的数字:实数和虚数)。

#include <iostream>
#include <cmath>
#ifndef COMPLEX_DATA_H
#define COMPLEX_DATA_H
struct complex_data

{
double re = 0; // real part
double im = 0; // immaginary part
};

#endif

int main()

{

std::cout << "Insert two complex numbers (re, im): ";
complex_data z1, z2;
std::cin >> z1.re >> z1.im;
std::cin >> z2.re >> z2.im;

... // the code continues

}

我想问两个问题:

  1. 考虑到 z1 和 z2 在函数内部并且它们的默认初始化是未定义的,让 z1 和 z2 未初始化会导致任何问题吗?

  2. 我们如何写出复数变量的实际形式?

    实际上是这样的 c = 3 + 2i。

    但是如果我们写出来,计算机会求和,因为它不知道实数和虚数之间的区别。所以我们将被迫使用一个字符串,但在这种情况下它将变成一个字符序列!有什么想法吗?

    使用 Ubuntu 14.04,g++ 4.9.2。

最佳答案

从 C++11 开始,你有 User defined literal (从 C++14 开始,您拥有标准文字 operator ""i 来表示 std::complex<double> 的纯虚数)。

你可以自己写operator ""_i为您定制struct complex_data还有operator +拥有你所期望的,比如:

constexpr complex_data operator"" _i(unsigned long long d)
{ return complex_data{ 0.0, static_cast<double>(d) }; }

Live example .

关于c++ - 中的复数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26905219/

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