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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2014, 22:43   #1
Frology
Новичок
Джуниор
 
Регистрация: 22.03.2014
Сообщений: 1
По умолчанию Операции с комплексными числами. Проконсультируйте. (аргумент, модуль, сложение, умножение, вычитание)

здравствуйте. Эта программа рабочая, работает для аргумента, сложения, вычитания, умножения, модуля комплексных чисел. Проверьте её пожалуйста. Что надо добавить / убрать... Меня затруднило

Код C++
Код:
{
complex a(7.0,6.0),b(2.0,4.0),c;
c=a*b;
c.print();
}

что здесь можно добавить, связанное с модулем и аргументом, подскажите.
вот код.
Код:
#include "stdafx.h"
#include "math.h"
#include <iostream>
using namespace std;

class complex//задаем класс
{
private://явл. собственным полем
	double m_a;//мембер "а"
	double m_b;
	
public:
	complex();
	complex (double a, double b);
	
	complex &operator+ (const complex&);//& относится к complex,возратить ссылку на класс
    complex &operator- (const complex&);
	/*перегрузка операторов Может выполнять арифметические и другие операции 
	для своих типов данных с помощью обычных символов + - *
	перегрузка оператора -класс будет использовать этот метод как оператор.когда класс 
	перегружает оператор, он должен указать функцию, которая реализует операцию, соответствующую этому оператору
	*/
    complex &operator* (const complex&);
	void print();

	double getModule();
	double getArgument();
	
	
};

complex::complex()
{
	m_a = 0.0;
	m_b = 0.0;
}

complex::complex (double a, double b)
{
	m_a = a;
	m_b = b;
}

//реализовываем + - * соответственно

complex &complex :: operator+ (const complex &source)
{
	/*Создаём новый объект класса КОМПЛЕКС с названием newComplex 
	с помощью конструктора complex (double a, double b);
	*/
    complex newComplex(this->m_a + source.m_a, this->m_b + source.m_b);
    /* this -указатель на экземпляр класса и представляет собой
	адрес объякта которому присвоили значение а.
	source - экземпляр класса, "." - обращение к данным и методам класса
	*/
	return newComplex; //возвратили это (+)
}
complex &complex :: operator- (const complex &source)
{
    complex newComplex(this->m_a - source.m_a, this->m_b - source.m_b);
    return newComplex;
}
complex &complex :: operator* (const complex &source)
{
    complex newComplex(this->m_a * source.m_a - this->m_b * source.m_b, this->m_a * source.m_b + this->m_b * source.m_a);
 // вычисление (a+bi)(c+di) = a*c-b*d + (a*d+b*c)i
    return newComplex;
}
double complex::getModule()
{
	return sqrt(m_a*m_a+m_b*m_b);
}
double complex::getArgument()
{
	return atan2(m_b, m_a);
}
 
void complex::print()
{
	cout << m_a << "+i" << m_b << endl;
}

void _tmain()
{
complex a(7.0,6.0),b(2.0,4.0),c;
c=a*b;
c.print();
}

Последний раз редактировалось Stilet; 23.03.2014 в 10:13.
Frology вне форума Ответить с цитированием
Старый 22.03.2014, 22:52   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

оформляйте код с помощью тегов [ CODE ] [ /CODE ] , кнопка #... иначе код трудночитаем и смайлики вылазят...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 22.03.2014, 23:16   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Действительно, код стоит оформлять.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.03.2014, 23:33   #4
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

думаю при выводе комплексного числа в функции
Код:
void complex::print()
{
	cout << m_a << "+i" << m_b << endl;
}
было бы неплохо предусмотреть случай когда аргумент при "i" отрицательный или вовсе отсутствует один из аргументов (или даже оба), что бы не выводить лишний мусор, пример: 56 + i-23 (тут может показаться что ответ не решен до конца, мол должно быть 33 + i, а не 56 -i23)

+ это же не все действия над комплексными числами... есть еще деление, корни...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложение, вычитание, умножение полиномов _Лето_ Общие вопросы C/C++ 0 08.12.2013 01:25
Уважаемые программисты, отзовитесь. (С++) Арифметические действия для комплексных чисел (сложение, вычитание, умножение и деление) Meurtre Помощь студентам 4 19.12.2011 01:15
Сложение, вычитание, деление, умножение в Turbo Debugger GaJIbI4 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 08.03.2010 15:23
обновление в блоге - Сложение, вычитание и умножение на Flat Assembler Pblog Обсуждение статей 0 24.04.2009 20:50