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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2013, 21:26   #1
Satansoft
Пользователь
 
Регистрация: 24.11.2012
Сообщений: 40
Сообщение Перегрузка операторов

Основная задача: Написать программу, оперирующую с комплексными числами, с использованием перегруженных операторов.
Не понятно: как оперировать с комплексными числами и как задавать их в коде, принцип перегрузки операторов в данном случае "Операции с компл. числами", никакие библиотеки, оперирующие с КЧ подключать нельзя, изобретаем велосипед заново...

Попытка создать шаблон для программы с перегрузкой операций, правилен ли синтаксис? в чем ошибки?

Код:
#include <iostream>
#include <math.h>
 
using namespace std;
 
class Complex{
private:
double real;
double image;
double result;
public:
Complex(double r, double i):real(r), image (i)
{}
Complex operator+(const Complex &left, const Complex &right)const;
{
return Complex(left.real+right.real*image);
}
Complex operator-(const Complex &left, const Complex &right)const;
{
return Complex(left.real-right.real*image);
}
Complex operator*(const Complex &left, const Complex &right)const;
{
return Complex(left.real*right.real*image);
}
};
 
int main()
{
    Complex p(5.67, 3.0);
}
Satansoft вне форума Ответить с цитированием
Старый 03.04.2013, 21:40   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Что сразу бросается в глаза - совершенно непонятные формулы для сложения, вычитания и умножения комплексных чисел.
http://ru.wikipedia.org/wiki/Комплексное_число
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 04.04.2013, 00:36   #3
Satansoft
Пользователь
 
Регистрация: 24.11.2012
Сообщений: 40
По умолчанию

Как задать мнимую единицу и присобачить в формулу?

Подкорректировал формулы, не ясно как перегружать операторы (в конструкторе перегружаем?) и не понятно как вызывать.
Код:
#include <iostream>
#include <math.h>

using namespace std;

class Complex{
private:
double real;
double real1;
double image;
double image1;
double resultR;
double resultI;
public:
Complex():real(0), image (0)
{}
void input()
{
    cout<<"Enter z1 (real):"<<endl;
    cin>>real;
    cout<<"Enter z1 (image):"<<endl;
    cin>>image;
    cout<<"Enter z2 (real):"<<endl;
    cin>>real1;
    cout<<"Enter z2 (image):"<<endl;
    cin>>image1;
}
int Show1(){cout<<resultR<<"+"<<resultI<<"i"<<endl;return 0;}
int Show2(){cout<<resultR<<"-"<<resultI<<"i"<<endl;return 0;}
int Show3(){cout<<resultR<<"*"<<resultI<<"i"<<endl;return 0;}

Complex operator+(const Complex &right)const;
{
return Complex((real+real1)+(image+image1));
}
Complex operator-(const Complex &right)const;
{
return Complex((real-real1)+(image-image1));
}
Complex operator*(const Complex &right)const;
{
return Complex((real*real1-image*image1)+((image*real1)+(image1*real));
}
};

int main()
{
    Complex p;
    p.input();
}

Последний раз редактировалось Stilet; 04.04.2013 в 08:24.
Satansoft вне форума Ответить с цитированием
Старый 04.04.2013, 22:01   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
#include <iostream>

using namespace std;

class Complex
{
private:
    double re;
    double im;
public:
    Complex(double _re = 0, double _im = 0): re(_re), im(_im) {}
    friend istream& operator >> (istream &f, Complex &y) {
        f >> y.re >> y.im;
        return f;
    }
    friend ostream& operator << (ostream &f, const Complex &y) {
        f << y.re;
        if (y.im > 0) {
            f << "+" << y.im << "i";
        } else if (y .im < 0) {
            f << y.im << "i";
        }
        return f;
    }
    Complex operator + (const Complex &r) const {
        return Complex(re + r.re, im + r.im);
    }
    Complex operator - (const Complex &r) const {
        return Complex(re - r.re, im - r.im);
    }
    Complex operator * (const Complex &r) const {
        return Complex(re * r.re - im * r.im, im * r.re + re * r.im);
    }
};

int
main()
{
    Complex p1, p2;
    cout << "Input Complex number (Re and Im): ";
    cin >> p1;
    cout << "Input Complex number (Re and Im): ";
    cin >> p2;
    cout << "(" << p1 << ") + (" << p2 << ") = " << p1 + p2 << endl;
    cout << "(" << p1 << ") - (" << p2 << ") = " << p1 - p2 << endl;
    cout << "(" << p1 << ") * (" << p2 << ") = " << p1 * p2 << endl;
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка операторов (С++) lolk Помощь студентам 2 31.05.2012 12:10
перегрузка операторов сега21 Помощь студентам 0 20.05.2012 12:38
Перегрузка операторов Granus Общие вопросы C/C++ 2 11.04.2012 20:52
Перегрузка операторов в С++ Purr Помощь студентам 0 09.10.2010 15:12
Перегрузка операторов, Организация перегрузки операторов chagin_yav Помощь студентам 2 12.05.2008 09:15