Helpex - Trao đổi & giúp đỡ Đăng nhập
16

Tôi muốn sử dụng C ++ với các số phức. Do đó tôi đã bao gồm #include <complex>. Bây giờ câu hỏi của tôi là: Làm cách nào để khai báo một biến? (Vì vậy định dạng được gọi là gì, hãy nói 1 + i:?)

Cảm ơn trước :-)

16 hữu ích 3 bình luận 33k xem chia sẻ
16
// 1 + 2i
std::complex<double> c(1, 2);
16 hữu ích 0 bình luận chia sẻ
11

Hàm tạo củastd::complex có hai tham số:

  • Đầu tiên, nó có một phần thực của con số.
  • Thứ hai, nó có phần ảo của con số.

Ví dụ:

std::complex<float> my_complex(1,1); //1 + 1i 

Ngoài ra, C ++ 11 giới thiệu các ký tự do người dùng xác định , cho phép chúng tôi triển khai (Hoặc được thực hiện bởi thư viện tiêu chuẩn, như trong đề xuất được chấp nhận C ++ 14 này ) một ký tự cho các số phức dễ sử dụng:

constexpr std::complex<float> operator"" i(float d)
{
    return std::complex<float>{0.0L,static_cast<float>( d )};
}

Bạn có thể sử dụng điều này như sau:

auto my_complex = 1i; // 0 + 1i
11 hữu ích 3 bình luận chia sẻ
9

Bạn xác định một biến bằng cách chỉ định một tham số mẫu và chỉ định tên cho biến, giống như với hầu hết các mẫu khác:

std::complex<double> x(1, 1);

Tham số đầu tiên của ctor là phần thực, phần thứ hai là phần ảo.

Bắt đầu với C ++ 14, một toán tử nghĩa đen do người dùng định nghĩa đã được thêm vào, vì vậy bạn có thể khởi tạo một biến phức tạp với ký hiệu tự nhiên hơn:

using namespace std::literals;

std::complex<double> c = 1.2 + 3.4i;

Trong trường hợp này, (rõ ràng là đủ) 1.2phần thực và 3.4phần ảo.

9 hữu ích 0 bình luận chia sẻ
8

Thử cái này:

#include <complex>
#include <iostream>
using namespace std;
int main()
{
    complex<double> a = {1,2};
    complex<double> b(3,4);

    cout << a + b << "\n";
}
8 hữu ích 0 bình luận chia sẻ
1

Đây là một ví dụ về cách sử dụng. Nó biên dịch và chạy theo QT

#include <QCoreApplication>
#include<complex>
#include<iostream>

using namespace std;

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
std::complex<double> x=3.0-3.0i;
std::complex<double> y=2.0+4.0i;

cout.precision(3);
cout<<"x="<<x<<" y="<<y<<'\n';
cout<<" OR x real="<<real(x)<<" x imagine="<<imag(x)<<"\n\n";

complex<double> sum = x + y;
cout<<"The sum: x + y = "<<sum<<'\n';

complex<double> difference = x - y;
cout<<"The difference: x - y = "<<difference<<'\n';

complex<double> product = x * y;
cout<<"The product: XY = "<<product<<'\n';

complex<double> quotient = x / y;
cout<<"The quotient: x / y = "<<quotient<<'\n';

complex<double> conjugate = conj(x);
cout<<"The conjugate of x = "<<conjugate<<'\n';

complex<double> reciprocal = 1.0/x;
cout<<"The reciprocal of x = "<<reciprocal<<'\n';

complex<double> exponential =exp(x);
cout<<"The exponential  of x = "<<exponential<<'\n';

double magnitude=2.0,phase=45;
cout<<"magintude = "<<magnitude<<" phase = "<< phase<<" degrees\n";
complex<double> pol= std::polar(2.0,(M_PI/180.0)*phase);
cout<<"The polar: x , y = "<<pol<<'\n';

return a.exec();
}
1 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ c++ numbers number-formatting , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading