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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ создать библиотеку из 5 функций: сложение, вычетание, деление, умножение и выделение корня http://www.cyberforum.ru/cpp-beginners/thread1064349.html
Нужно срочно сделать курсовую работу, а код написать не могу , как бы ни старался :( задача: создать библиотеку из 5 функций: сложение, вычетание, деление, умножение и выделение корня. мне препод...
C++ Найти количество положительных элементов расположенных ниже главной диагонали матрицы Найти количество положительных элементов расположенных ниже главной диагонали матрицы, с++ http://www.cyberforum.ru/cpp-beginners/thread1064346.html
C++ Создать приложение в котором в левой чисти экрана будет куб который будет вращаться с помощью "перетаскивания мыши"
Дали задание, не знаю как делать, подскажите пожалуйста. Вот текст задания: Создать приложение в котором в левой чисти экрана будет куб который будет вращаться с помощью "перетаскивания мыши" в...
Метод Гаусса-Зейделя C++
Ребят, нужна помощь. Программа вроде бы написана правильно, корни выдает подходящие. По идее, должно выполняться около 10-20 итераций, для нахождения корней. Но, вместо этого, выполняется от 40 до...
C++ Невозможно преобразование http://www.cyberforum.ru/cpp-beginners/thread1064322.html
Недавно начал разбираться со строками и malloc,realloc . Ниже пытался описать программу для правильного выделения памяти строке. Показывает ошибку : 1>c:\users\Егор\documents\visual studio...
C++ В текстовом файле найти все устойчивые словосочетания Всем доброго времени суток. Нужно сегодня сдать задачу до конца суток, я 2 дня ломаю голову над ней, ничего не выходит. Помогите кто может, пожалуйста. В текстовом файле найти все устойчивые... подробнее

Показать сообщение отдельно
Aндерсон_256
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 16

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

06.01.2014, 22:33. Просмотров 377. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru