Форум кафедры Техники и Электрофизики Высоких Напряжений

Онлайн-сообщество ТВНщиков
Гостям форума:

Добро пожаловать на форум по технике высоких напряжений!
Для получения доступа ко всем разделам необходимо зарегистрироваться


Текущее время: 19 фев 2018, 03:08

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Класс complex из занятия №2
СообщениеДобавлено: 11 окт 2017, 03:43 
Не в сети
Site Admin

Зарегистрирован: 03 сен 2008, 16:09
Сообщения: 4210
Откуда: Д-3
Выкладываю файлы с сегодняшнего занятия ровно в том виде, в каком они были к его окончанию. Напоминаю, что вам нужно довести этот класс до ума.

Задавайте вопросы!


У вас нет необходимых прав для просмотра вложений в этом сообщении.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Класс complex из занятия №2
СообщениеДобавлено: 13 окт 2017, 11:38 
Не в сети

Зарегистрирован: 14 май 2009, 10:09
Сообщения: 9
Спасибо, Даниил Анатольевич!
Напомните, пожалуйста, что входит в "довести до ума"! ^_^


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Класс complex из занятия №2
СообщениеДобавлено: 13 окт 2017, 11:50 
Не в сети
Site Admin

Зарегистрирован: 03 сен 2008, 16:09
Сообщения: 4210
Откуда: Д-3
1. По аналогии с operator += перегрузить:
operator -=
operator *=
operator /=
Все эти операторы должны возвращать *this, то есть возвращаемый тип: complex&

2. Перегрузить операторы:
operator+
operator-
operator*
operator/

3. Перегрузить унарный минус:
operator- с одним аргументом.

4. Перегрузить операторы == и !=.

5. Перегрузить оператор >> для объекта cin.

6. Поместить класс complex в отдельное пространство имен, чтобы он не конфликтовал с std::complex в случае using namespace std.

Реализацию всех перечисленных функций нужно поместить в файле complex.cpp

Проверьте, как написанные вами функции работают с другими типами, например:

double x {1};
complex y {1,1};
cout << x + y << endl;


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Класс complex из занятия №2
СообщениеДобавлено: 15 окт 2017, 16:49 
Не в сети

Зарегистрирован: 12 окт 2016, 20:08
Сообщения: 14
Здравствуйте!

Появился вопрос в выполнении пятого задания.
Что нужно исправить, чтобы избежать рекурсии? (warning C4717: operator>>: рекурсия на всех путях выполнения, функция вызовет переполнение стека)

Сейчас код выглядит так:

std::istream& operator >> (std::istream& is, complex z)
{
is >> z.real() >> z.imag();
return is;
};


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Класс complex из занятия №2
СообщениеДобавлено: 16 окт 2017, 20:37 
Не в сети
Site Admin

Зарегистрирован: 03 сен 2008, 16:09
Сообщения: 4210
Откуда: Д-3
А что Вы делаете?
Давайте рассмотрим операцию is >> z.real() - что здесь произойдет? z.real() возвращает копию действительной части комплекса z. Вы этой копии пытаетесь присвоить значение, считанное из потока. Комплекс z при этом не изменится. Ну и сам факт того, что complex z Вы отправляете в оператор >> не по ссылке, а по значению, уже гарантирует то, что требуемая функциональность достигнута не будет.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB