2016-10-25 5 views
1

я делаю что-то вроде:C++ отображать комплексное число с I в мнимой части

int real_part, imaginary_part; 
cout<<"Please enter realpart and imaginary part"<<endl; 
cin>>real_part; 
cin>>imaginary_part; 
complex<double> mycomplex (real_part, imaginary_part); 
cout<<mycomplex<<endl; // I want to display like -2+5i but I get (-2, 5) 

Я новичок в C++

Как можно отобразить с i как -2+5i? Или мне нужно добавить i символ с воображаемой частью?

+4

Если вам не нравится встроенный в форматировании вы будете иметь, чтобы написать свой собственный. – NathanOliver

+2

@UKMonkey, 'std :: showpos' может быть более простым подходом :) – StoryTeller

+1

@UKMonkey, io манипуляторы вряд ли являются атлантическими. Не нужно понимать, как реализовать его, чтобы его использовать. Но подойди. – StoryTeller

ответ

3

Вы можете использовать std::real() и std::imag() для форматирования, как вам нравится, см. complex here.

Конечно, вам нужно будет проверить наличие знака самостоятельно.

Что-то вроде этого:

std::cout 
    << std::real(mycomplex) 
    << (std::imag(mycomplex) >= 0.0 ? "+" : "") 
    << std::imag(mycomplex) 
    << " i" 
    << std::endl; 
+3

Я бы не использовал 'std :: endl' и вместо этого использовал' '\ n" 'или' '\ n'', если вы не знаете, что вам нужно сбросить буфер. В противном случае вы платите за то, что вам может не понадобиться. – NathanOliver

+0

Да, теперь я это. И я делаю. Но это то, что было в вопросе ОП. Я уже добавил 'std ::', не хотел звучать слишком педантично! ;) – kebs

+0

C'mon, Pedants unite :) – NathanOliver

1

Вы можете просто написать:

cout<< mycomplex.real << std::showpos << mycomplex.imag << "i" << endl; 
1

Для полноты картины с другим ответом. Вы можете использовать std::showpos более легко форматировать выход во что-то подписал

cout << real(mycomplex) << std::showpos << imag(mycomplex) << "i"; 

 Смежные вопросы

  • Нет связанных вопросов^_^