Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Aндерсон_256
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 16
#1

Как осуществить корректное конструирование объекта и отправить его на вывод? - C++

06.01.2014, 22:33. Просмотров 370. Ответов 2
Метки нет (Все метки)

Условия задачи:
Комплексное число состоит из двух частей — вещественной и мнимой. Один из способов записи такого числа выглядит как (3.0, 4.0). Здесь 3.0 — вещественная часть, а 4 .0 — мнимая. Предположим, что а = (А, Ві) и с = (С, Di). Ниже представлены некоторые операции с комплексными числами:
• сложение: а + с = (А + С, (В + D)i)
• вычитание: а - с = (А - С, (В - D)i)
• умножение: а*с = (А*С - В*D, (A*D + В*С)і)
• умножение (х — вещественное число): х*с = (х*С, x*Di)
• сопряжение: ~а = (А, - Ві) Определите класс complex так, чтобы следующая программа могла использовать
его с корректными результатами:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
#include <iostream>
using namespace std;
#include "complex0.h"
int main ()
{
complex a(3.0, 4.0);
complex c;
cout << "Enter a complex number (q to quit) :\n";
while (cin >> c)
{
cout << "с is " << c << '\n';
cout << "complex conjugate is " << ~c << '\n';
cout << "a is " << a << '\n';
cout << "a+c is "<<a+c<<endl;
cout << "a - с is " << a - c << '\n';
cout << "a * с is " << a*c << '\n';
cout << "2*с is " << 2 * c << '\n';
cout << "Enter a complex number (q to quit) :\n";
}
cout << "Done!\n";
return 0;
}
He забывайте, что вы должны перегрузить операции << и >>. В стандарте C++ уже присутствует поддержка комплексных чисел — и намного более развитая, чем в этом примере — в заголовочном файле complex, поэтому во избежание конфликтов назовите свой файл complexO.h. Используйте const там, где это
оправдано.
Ниже показан пример выполнения этой программы:
Enter a complex number (q to quit) :
real: 10
imaginary: 12
с is (10,12i)
complex conjugate is (10,-12i)
a is (3,4i)
a + с is (13,16i)
a - с is (-7,-8i)
a * с is (-18,76i)
2 * с is (20,24i)
Enter a complex number (q to quit) :
real: q
Done!
Обратите внимание, что благодаря перегрузке, cin >> с теперь запрашивает
ввод вещественной и мнимой частей комплексного числа.
_______________________________________________
По-моему, в моем коде что-то не так с конструктором, который должен собирать готовый объект из двух значений double, переданных функцией,выполняющей арифметические действия, и передавать на вывод на экран.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef COMPLEX0_H_
#define COMPLEX0_H_
#include<iostream>
class complex
{
private:
double real;
double imaginary;
public:
complex(double a,double b);
complex();
~complex();
complex operator~()const;
complex operator+(complex&t);
complex operator-(complex&t);
complex operator*(complex&t);
friend complex operator*(double nm,complex&q);
friend std::istream& operator>>(std::istream&is,complex&i);
friend std::ostream& operator<<(std::ostream&os,complex&e);
};
#endif
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include "complex0.h"
using namespace std;
complex::complex(double a,double b)
{
   real=a;
   imaginary=b;
}
complex::complex()
{
    real=0.0;
    imaginary=0.0;
}
complex::~complex()
{
}
complex complex::operator~()const
{
    return complex(real,-imaginary);
}
complex complex::operator+(complex&t)
{
    return complex(real+t.real,imaginary+t.imaginary);
}
complex complex::operator-(complex&t)
{
    return complex(real-t.real,imaginary-t.imaginary);
}
complex complex::operator*(complex&t)
{
    return complex(real*t.real,imaginary*t.imaginary);
}
complex operator*(double nm,complex&q)
{
    return complex(nm*q.real,nm*q.imaginary);
}
 
istream& operator>>(istream&is,complex&i)
{
 
    cout<< " Enter a complex number (q to quit) \n";
    cout << "real: ";
    is>>i.real;
    cout << "\n imaginary: ";
    is>>i.imaginary;
    return is;
}
ostream& operator<<(ostream&os,complex&e)
{
    os<< "(" <<e.real<< ", " <<e.imaginary <<"i)"<<endl;
    return os;
}
Добавлено через 4 часа 57 минут
Вот такую ошибку выдает компилятор:
error: no match for 'operator<<' in 'std::operator<< <std::char_traits<char> >((* & std::cout), ((const char*)"complex conjugate is ")) << complex::operator~() const()'
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2014, 22:33     Как осуществить корректное конструирование объекта и отправить его на вывод?
Посмотрите здесь:

Как в методе класса осуществить вывод переменной - C++
По идее нужно чтобы вывело 11, а выводит 0. В чем ошибка понять не могу. #include &lt;iostream&gt; using namespace std; class Int { ...

Можно ли как-то осуществить вывод кириллицы в консоль, не используя Lucida Console - C++
Собственно сабж в заголовке. Есть способ оставить стандартный Consolas?

Как отправить текст в окно игры, не активируя его при этом? - C++
Поиск hwnd не дает результатов, так как находит только один, который с window name. А как реализованы остальные? С помощью directx или...

Как осуществить такую программу где ввод и вывод будет на одной строке? - C++
Допустим у меня есть такой код int main() { int a,b; scanf(&quot;%i&quot;,&amp;a); printf(&quot;+&quot;); scanf(&quot;%i&quot;, &amp;b); printf(&quot;=%i&quot;, a + b);...

Конструирование значения целого числа или числа с плавающей точкой по его дампу - C++
Как сконструировать значения целого числа(char, short int, long int) или числа с плавающей точкой(float,double) по его дампу(bin,oct,hex)??

Как произвести клонирование объекта со всеми его компонентами? - C++
Добрый день, Уважаемые форумчане. Столкнулся с такой проблемой: Есть объект Object, который содержит множество компонентов Component....

Как создать копию объекта, зная его указатель? - C++
Здравствуйте, существует следующая проблема. В своей программе я рисую график используя класс QwtPolarPlot. По нажатию на график, должно...

Задано число в 8-ой СС. Осуществить его перевод в 10-ую СС - C++
Никак не могу написать программу! Прошу о помощи!

Каким образом лучше осуществить вывод массива с помощью графики? - C++
Добрый день! Имеется массив размера примерно 1000 на 500. Некоторые ячейки закрашенные, некоторые нет. Каким образом лучше осуществить...

Класс матрица (осуществить вывод матриц в виде массива 3х3) - C++
Здравствуйте. Помогите пожалуйста осуществить вывод матриц в виде массива 3х3, а также выбор метода класса по желанию пользователя. ...

Массив отсортировать по возрастании длины строки и отправить его в файл - C++
Надо задать масив отсиртировать его по возрастании длины строки и отправить его в файл

С помощью рекурсивной функции осуществить вывод на экран элементов одномерного массива - C++
С помощью рекурсивной функции осуществить вывод на экран элементов одномерного массива


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
06.01.2014, 23:19     Как осуществить корректное конструирование объекта и отправить его на вывод? #2
Aндерсон_256, в какой строке такое выдает?

Добавлено через 4 минуты
Aндерсон_256, попробуйте написать
C++
1
ostream& operator<<(ostream&os, const complex&e)
Aндерсон_256
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 16
07.01.2014, 14:54  [ТС]     Как осуществить корректное конструирование объекта и отправить его на вывод? #3
Цитата Сообщение от metaluga145 Посмотреть сообщение
Aндерсон_256, в какой строке такое выдает?

Добавлено через 4 минуты
Aндерсон_256, попробуйте написать
C++
1
ostream& operator<<(ostream&os, const complex&e)
Спасибо, все заработало.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru