Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

06.01.2014, 22:33. Просмотров 393. Ответов 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()'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2014, 22:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как осуществить корректное конструирование объекта и отправить его на вывод? (C++):

Как в методе класса осуществить вывод переменной - 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);...

Осуществить с помощью ассемблера ввод знакового числа с клавиатуры и его вывод на экран - Assembler
Осуществить с помощью ассемблера ввод знакового числа с клавиатуры и его вывод на экран в заданных формах представления. Для ввода и вывода...

DataReport - корректное закрытие объекта - Visual Basic
После вывода на печать DataReport1 выполняю Set DataReport1= Nothing. (для того чтобы при следующем выполнении прошла процедура...

2
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)
1
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)
Спасибо, все заработало.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2014, 14:54
Привет! Вот еще темы с ответами:

Как осуществить вывод без повторений - PHP БД
Подскажите пожалуйста как осуществит вывод без повторений? что бы название, год , страна и длительность выводились один раз, а актеры и...

Как осуществить вывод данных в Excel? - C++ Builder БД
Всех с наступившим! Не могу никак разобраться. Хочу соединить ADOConnect, DBGrid с Excel. Возможно ли такое? Если да, то подскажите через...

ID элемента: как его получить и в каком виде и как отправить на сервер - C# ASP.NET
есть код на js, который отправляет данные на сервер. собственно мне надо отправить id элемента и значение ещё input'a как их отправить...

Как осуществить вывод числовых данных в TextBox - C#
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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