PDA

View Full Version : سربارگذاری عملگر یا Overloading



hercool
جمعه 31 اردیبهشت 1389, 23:19 عصر
سلام دوستان من در رابطه با سربارگذاری عملگر ها به کمک نیاز دارم
می خوام عملگر / تقسیم رو در ++c تعریف کنم اما نمی تونم ممنون میشم دوستان راهنمایی کنن
سه عملگر بقیه رو می دونم اما این یکی رو نه ممنون میشم دوستان راهنمایی کنن
مثلا برای ضرب


complex complex::operator *(complex)
{
complex.temp;
temp.re=(this->re)*w.re-(this->im)*w.im;
temp.im=(this->re)*w.im+(this->im)*w.re;
return temp;
}

در رابطه با / راهنمایی کنید

ممنون

mohsensaghafi
شنبه 01 خرداد 1389, 08:33 صبح
سلام دوستان من در رابطه با سربارگذاری عملگر ها به کمک نیاز دارم
می خوام عملگر / تقسیم رو در ++c تعریف کنم اما نمی تونم ممنون میشم دوستان راهنمایی کنن
سه عملگر بقیه رو می دونم اما این یکی رو نه ممنون میشم دوستان راهنمایی کنن
مثلا برای ضرب


complex complex::operator *(complex)
{
complex.temp;
temp.re=(this->re)*w.re-(this->im)*w.im;
temp.im=(this->re)*w.im+(this->im)*w.re;
return temp;
}

در رابطه با / راهنمایی کنید

ممنون

سلام دوست عزیز.
برای این کار این لینک ها رو ببین. راهنمایی کرده که تقسیم رو چطوری باید انجام بدی.
http://regentsprep.org/regents/mathb/3C4/multlesson.htm
http://www.mathwarehouse.com/algebra/complex-number/divide/how-to-divide-complex-numbers.php
http://www.analyzemath.com/Calculators/DivideComplexCalculator.html

با توجه به این راه حل می تونی عملگر رو سربارگذاری کنی.

hercool
شنبه 01 خرداد 1389, 19:45 عصر
این بار گذاری 4 عمل اصلی
یعنی +.-.*./
شاید بعدا به کارتون بیاد
طبق تاپیکی که خونده بودم سعی می کنم هر موقع به جواب رسیدم در اختیار دیگران هم قرار بدم که تاپیک نصف کاره رها نشه و به عنان اشغال توی سایت نباشه
با تشکر از دوست عزیز که راهنمایی کردن
اینم کدش

#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
class complex{
public:
void get();
void show();
complex operator +(complex w);
complex complex::operator -(complex w);
complex complex::operator *(complex w);
complex complex::operator /(complex);
private:
float re; float im;
};
void main(){
complex z1,z2,z3,z4,z5,z6;
z1.get();
z2.get();
z3=z1+z2;
z4=z1-z2;
z5=z1*z2;
z6=z1/z2;
cout<<"z1+z2:"<<" ";z3.show();cout<<endl;
cout<<"z1-z2:"<<" ";z4.show();cout<<endl;
cout<<"z1*z2:"<<" ";z5.show();cout<<endl;
cout<<"z1/z2:"<<" ";z6.show();cout<<endl;
getch();
return;
}
void complex::get(){cout<<"please enter 2 re number and 2 number imaging";
cin>>re>>im;return;}
void complex::show()
{cout<<re<<"+i"<<im;return;}
complex complex::operator +(complex w)
{complex temp;
temp.re=this->re+w.re;
temp.im=this->im+w.im;
return temp;}
complex complex::operator -(complex w)
{complex temp;
temp.re=this->re-w.re;
temp.im=this->im-w.im;
return temp;}
complex complex::operator *(complex w)
{complex temp;
temp.re=(this->re)*w.re-(this->im)*w.im;
temp.im=(this->re)*w.im+(this->im)*w.re;
return temp;}

complex complex::operator /(complex w)
{
complex temp;
temp.re=(this->re)*w.re+(this->im)*w.im/w.re*w.re+w.im*w.im;
temp.im=(this->im)*w.re-(this->re)*w.im/w.re*w.re+w.im*w.im;
return temp;}