Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 14.02.2018, 20:56   #1
Кристина1998
Форумчанин
 
Регистрация: 01.11.2016
Сообщений: 110
Репутация: 10
По умолчанию Перегрузка операторов

В работе необходимо дополнить класс реализованный операторными функциями, используя перегрузку операторов. Реализовать перегрузку трёх операторов:присваивание,больше, умножение
Complex.h
#ifndef COMPLEX_H
#define COMPLEX_H
#include <iostream>
class Сomplex
{
private:
int *real_part;
int *imaginary_part;
public:
Сomplex ();
~Сomplex ();

void set_real_part (const int r);
void set_imaginary_part (const int i);
int get_real_part () const;
int get_imaginary_part () const;

void add (const Сomplex &test_1, const Сomplex &test_2);
void sub (const Сomplex &test_1, const Сomplex &test_2);
void mul (const Сomplex &test_1, const Сomplex &test_2);
void div (const Сomplex &test_1, const Сomplex &test_2);
};
#endif

main.cpp:
#include "Complex.h"

int
main()
{
setlocale(LC_ALL, "Rus");

int a = 0;
Сomplex test_1;
std::cout << "Введите действительную часть первого числа:";
std::cin >> a;
test_1.set_real_part (a);
std::cout << "Введите мнимую часть первого числа:";
std::cin >> a;
test_1.set_imaginary_part (a);

Сomplex test_2;
std::cout << "Введите действительную часть второго числа:";
std::cin >> a;
test_2.set_real_part(a);
std::cout << "Введите мнимую часть второго числа:";
std::cin >> a;
test_2.set_imaginary_part(a);

Сomplex test_3;

test_3.add(test_1, test_2);
if (test_3.get_imaginary_part() >= 0)
std::cout << "Cумма = " << test_3.get_real_part() << " + " << test_3.get_imaginary_part() << " i" << std::endl;
else
std::cout << "Cумма = " << test_3.get_real_part() << " " << test_3.get_imaginary_part() << " i" << std::endl;

test_3.sub(test_1, test_2);
if (test_3.get_imaginary_part() >= 0)
std::cout << "Разность = " << test_3.get_real_part() << " + " << test_3.get_imaginary_part() << " i" << std::endl;
else
std::cout << "Разность = " << test_3.get_real_part() << " " << test_3.get_imaginary_part() << " i" << std::endl;

test_3.mul(test_1, test_2);
if (test_3.get_imaginary_part() >= 0)
std::cout << "Произведение = " << test_3.get_real_part() << " + " << test_3.get_imaginary_part() << " i" << std::endl;
else
std::cout << "Произведение = " << test_3.get_real_part() << " " << test_3.get_imaginary_part() << " i" << std::endl;

test_2.set_real_part(1);
test_2.set_imaginary_part(4);

system("pause");
return 0;
}

Complex.cpp:
#include "Complex.h"

Сomplex::Сomplex() // конструктор
{
real_part = new int;
imaginary_part = new int;
}

Сomplex::~Сomplex() // деструктор
{
delete real_part;
delete imaginary_part;
}

void
Сomplex::set_real_part(const int r)
{
*real_part = r;
}

void
Сomplex::set_imaginary_part(const int i)
{
*imaginary_part = i;
}

int
Сomplex::get_real_part() const
{
return *real_part;
}

int
Сomplex::get_imaginary_part() const
{
return *imaginary_part;
}

void
Сomplex::add(const Сomplex &test_1, const Сomplex &test_2)
{
*real_part = test_1.get_real_part() + test_2.get_real_part();
*imaginary_part = test_1.get_imaginary_part() + test_2.get_imaginary_part();
}

void
Сomplex::sub(const Сomplex &test_1, const Сomplex &test_2)
{
*real_part = test_1.get_real_part() - test_2.get_real_part();
*imaginary_part = test_1.get_imaginary_part() - test_2.get_imaginary_part();
}

void
Сomplex::mul(const Сomplex &test_1, const Сomplex &test_2)
*real_part = test_1.get_real_part() * test_2.get_real_part() + test_1.get_imaginary_part() * test_2.get_imaginary_part();

*imaginary_part = test_1.get_real_part() * test_2.get_imaginary_part() + test_1.get_imaginary_part() * test_2.get_real_part();

}
Кристина1998 вне форума   Ответить с цитированием
Старый 14.02.2018, 21:29   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 10,623
Репутация: 1720

icq: 216409213
По умолчанию

и? (10 и?)
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 15.02.2018, 00:07   #3
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 706
Репутация: 556
По умолчанию

1) Там везде в слове Complex стоит русская "С"
2) При умножении ошибка в формуле: должно быть re = re1*re2 - im1*im2, а стоит плюс
Black Fregat вне форума   Ответить с цитированием
Ответ



Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перегрузка операторов сега21 Помощь студентам 0 20.05.2012 12:38
Перегрузка операторов C++ applegrub Общие вопросы C/C++ 4 20.12.2011 01:04
Перегрузка операторов stas135642 Общие вопросы C/C++ 0 13.11.2011 23:09
перегрузка операторов C++ Kingdom_Reborn Помощь студентам 0 29.09.2011 20:58
Перегрузка операторов, Организация перегрузки операторов chagin_yav Помощь студентам 2 12.05.2008 09:15




02:09.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
лучший хостинг
Выбираем лучший хостинг: рейтинг ТОП 10
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru