Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Kласс комплексных чисел


Автор: Гениальный123Робот 22.1.2008, 17:33
Разработать класс для представления комплексных чисел, реализовать основные операции над комплексными числами (сложение, вычитание, умножение, деление на число, деление на комплексное число).

Спс заранее, кто поможет

Автор: APM 22.1.2008, 18:28
Используй поиск, не так давно приводили пример кода.

Автор: Treod 23.1.2008, 14:57
Вот пока это:
Код

using namespace std;

class cmp
{
    double re, im;
public:
    cmp(){
        re=0; 
        im=0;
    }
    cmp(double rr){
        re=rr; 
        im=0;
    }
    cmp(double rr, double ii){
        re=rr;
        im=ii;
    }
    // Конструктор копирования
    cmp(cmp& c){
        re=c.re;
        im=c.im;
    }
    cmp& operator = (const cmp& c){
        re=c.re;
        im=c.im;
        return *this;
    }
    cmp operator + (const cmp& c){
        cmp t;
        t.re=re+c.re;
        t.im=im+c.im;
        return t;
    }
    cmp operator - (const cmp& c){
        cmp t;
        t.re=re-c.re;
        t.im=im-c.im;
        return t;
    }



    friend istream& operator >> (istream& in, cmp& c){
        in >> c.re >> c.im;
        return in;
    }
    friend ostream& operator << (ostream& out, cmp& c){
        out << "(" << c.re << ";" << c.im << ")";
        return out;
    }
};


Автор: Гениальный123Робот 23.1.2008, 17:05
Спасибо, Treod! уже что-то есть. Можно чуток пояснить ключевые моменты кода? Вижу там сложение, вычитание... наверн

Автор: Treod 23.1.2008, 19:13

Здесь впринципе пояснять нечего. Присутсувует перегрузка =, +, -. А также cout, cin (операторы ввода-вывода).

Автор: Гениальный123Робот 24.1.2008, 15:14
Пардон, а = что значит? Операции + и - я понял, а вот = не совсем
И помоги, пожалуйста, с реализацией умножения и деления на число, а то я еще не совсем... 
Спасибо большое

Автор: orthrus 24.1.2008, 15:51
"=" это оператор присваивания.

Автор: Treod 26.1.2008, 22:13

Гениальный123Робот, не напомнишь как математически можно умножить и разделить комплексное число на действительное...

Автор: Гениальный123Робот 28.1.2008, 13:07
Вроде что-то такое? Тока что значат Прагмы в начале? 

Код

#pragma hdrstop
#include "Complex.h"
#pragma package(smart_init)

Complex::Complex(double Re, double Im)
{
   x = Re;
   y = Im;
}


double Complex::GetRe(void)
{
   return x;
}

double Complex::GetIm(void)
{
   return y;
}



Complex Complex::operator+(const Complex &z)
{
   return Complex(x+z.x, y+z.y);
}



Complex Complex::operator-(const Complex &z)
{
   return Complex(x-z.x, y-z.y);
}



Complex Complex::operator*(const Complex &z)
{
   return Complex(x*z.x-y*z.y, x*z.y + y*z.x);
}


Complex Complex::operator/(const Complex &z)
{
   return Complex((x*z.x + y*z.y) / (z.x*z.x + z.y*z.y),(y*z.x - x*z.y) / (z.x*z.x + z.y*z.y) );
}




Автор: TeAnton 1.2.2008, 02:46
Объясните мне пожалуйста почему нельзя посмотреть в исходники complex из STL? Там даже есть реализация тригонометрических функций, возведения в степень, взятие логарифма, перевод в полярные координаты и т.п.

http://www.aoc.nrao.edu/~tjuerges/ALMA/STL/html/complex-source.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)