Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

В работе необходимо дополнить класс реализованный операторными функциями, используя перегрузку операторов. Реализовать перегрузку трёх операторов:присваивание,больше, умножение
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, 20:29   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

и? (10 и?)
p51x вне форума Ответить с цитированием
Старый 14.02.2018, 23:07   #3
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перегрузка операторов сега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