PDA

View Full Version : اشکالی در رابطه با پیاده سازی class اعداد مختلط



daneshjo IT
دوشنبه 21 خرداد 1386, 10:48 صبح
سلام.
من یک code در رابطه با class اعداد مختلط(x+iy ) نوشتم اما یک قسمت هاییش اشکال داره؟
در این class اعداد x,yاز کاربر گرفته میشوند و به صورت (x+iy) نمایش داده میشوند البته عملیاتی مانند (+ ,* ,-)هم روی این اعدا انجام میشود.
قسمتی از class را که به صورت سوالم مربوط میشود را مینویسم::



#include<iostream.h>
#include<conio.h>
class comple {
friend ostream &operator<<(ostream &,const comple &);
friend istream &operator>>(istream &,const comple &);
private:

float x,y;

public:
comple operator *( comple p );
void result2();
{;



1)این که در بارگذاری operator >>,<< ما دو مقدار x, y را از کاربر میگیریم و بعد چاپ میکنیم. code زیر در قسمت گرفتن عناصر error میگیرد؟



istream &operator>>(istream &input,const comple & obj)
{
cout<<" The form of Complex number is( X+iY)"<<endl;
cout<<" Please enter X & Y "<<endl;
input>>obj.x;
input>>obj.y;
return input;
}
//**************************************************
ostream &operator<<(ostream &output,const comple & obj)
{
output<<obj.x<<" + i("<<obj.y<<")"<<endl<<endl;;
return output;
}
//******************************************


2)در مورد بارگذاری operator *برای مثال من code را نوشتم :



comple comple :: operator *(comple p);
{
comple f;
f.x=x*p.x;
f.y=y*p.y;
return(f);
}
//************************************************
void comple::result2()
{
cout<<" The zarb of these number is: "<<this->x<<"+ i("<<this->y<<")"<<endl<<endl;
{


نمیدونم اشکالش کجاست؟
(من برای بارگذاری operato های (+,-) هم میتونم همانند code بالا عمل کنم.با این تفاوت که به جای operator*, علامت + قرار میگیرد و در methode result به جای result2 کمی نام را تغییر بدهم؟(مثلا result1 ) .آیای امکان انجام چنین کاری را دارم؟؟؟؟


code را که برای main برنامه نوشتم:::



int main()
{
comple s,s1,s2;
clrscr();
cin>>obj;
cin>>obj;
cout<<obj;
cin>>obj;
cin>>obj;
cout<<obj;
s=s1*s2;
s.result2();
getch();
return 0;
}


error های برنامم در قسمت بار گذاری operator>> ( اپراتور cin) و بارگذاری اپراتور (*)است.
منتظر راهنماییتون هستم.

emad_67
دوشنبه 21 خرداد 1386, 11:57 صبح
1)این که در بارگذاری operator >>,<< ما دو مقدار x, y را از کاربر میگیریم و بعد چاپ میکنیم. code زیر در قسمت گرفتن عناصر error میگیرد؟

بهتر از const استفاده نکنید چون شیء های const شرایطی دارند که ممکنه مشکل به وجود بیارن این جا هم اگه const رو حذف کنید مشکل رفع میشه


2)در مورد بارگذاری operator *برای مثال من code را نوشتم :

این کدتون مشکلی نداره فقط ; رو از آخر تابع بر دارید


comple comple :: operator *(comple p);



(من برای بارگذاری operato های (+,-) هم میتونم همانند code بالا عمل کنم.با این تفاوت که به جای operator*, علامت + قرار میگیرد و در methode result به جای result2 کمی نام را تغییر بدهم؟(مثلا result1 ) .آیای امکان انجام چنین کاری را دارم؟؟؟؟

بله میشه این کارو کرد



code را که برای main برنامه نوشتم:::

در main شیء ایی به نام obj تعریف نشده بعد اومدین نوشتین cin>>obj

f.asadkhani
پنج شنبه 08 خرداد 1393, 12:03 عصر
باسلام.
دوست عزیز میشه این برنامه پیاده سازی اعداد مختلط با 4 عمل اصلی رو برام میل کنید؟؟برای درس پی الم میخام.هزینش چقدمیشه؟؟
باتشکر