PDA

View Full Version : سوال: کلاسی به نام رشنال



alirah84
جمعه 28 مهر 1391, 16:00 عصر
سلام
من این برنامه رو نوشتم , دوستان اگه میشه یه نگاه بندازن و اشکالاش رو بهم بگن.در ضمن مورد 5 رو لطف کنید یه کمک کنید.
تشکر
برنامه:
کلاسی به نام rational ایجاد کنید که اعمال محاسباتی را روی اعداد کسری انجام دهد. سپس برنامه ای بنویسید که از این کلاس استفاده کند. اعضای داده ای کلاس عبارتند از صورت و مخرج کسر و توابع عضو کلاس عبارتند از: جمع 2 عدد کسری، تفریق 2 عدد کسری، ضرب 2 عدد کسری، تقسیم 2 عدد کسری، چاپ اعداد کسری بصورت کسری، چاپ اعداد کسری بصورت اعشاری.


class rational
{
public:
int a,b,c,d;
int plus (int ,int ,int ,int );
int tafrigh (int ,int ,int ,int );
int zarb (int ,int ,int ,int );
int taghsim (int ,int ,int ,int );
void printplus ();
void printtafrigh ();
void printzarb ();
void printtaghsim ();
};
int rational :: plus(int a,int b,int c,int d)
{
return a/b +c/d;
}
int rational :: tafrigh(int a,int b,int c,int d)
{
return a/b - c/d;
}
int rational :: zarb(int a,int b,int c,int d)
{
return (a/b) * (c/d);
}
int rational :: taghsim(int a,int b,int c,int d)
{
return (a/b) / (c/d);
}
void rational :: printplus (void )
{
cout<< a/b +c/d;
}
void rational :: printtafrigh (void )
{
cout<< a/b - c/d;
}
void rational :: printzarb (void )
{
cout<< (a/b) * (c/d);
}
void rational :: printtaghsim (void )
{
cout<< (a/b) / (c/d);
}
int main()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
rational p;
p.plus(int a,int b,int c,int d);
p.tafrigh(int a,int b,int c,int d);
p.zarb(int a,int b,int c,int d);
p.taghsim(int a,int b,int c,int d);
p.printplus ()
p.printtafrigh()
p.printzarb()
p.printtaghsim ()
}

vb8334
شنبه 29 مهر 1391, 00:49 صبح
سلام دوست عزیز

من برات ضربش رو نوشتم بقیش رو خودت بنویس. کاری نداره فقط باید روش جمع و تفریق و تقسیم کسرها رو
بلد باشی


#include <iostream>

using namespace std;

class kasr
{
public:

float soorat;
float makhraj;

void print()
{
cout<<"zarb:"<<soorat<<"/"<<makhraj;
}

kasr zarb(kasr k)
{
kasr result;

result.soorat=k.soorat*soorat;
result.makhraj=k.makhraj*makhraj;

return result;

}

};

int main()
{

kasr k1;
kasr k2;

k1.soorat=5;
k1.makhraj=3;

k2.soorat=2;
k2.makhraj=6;

k1.zarb(k2).print();



return 0;
}


موفق باشی

alirah84
شنبه 29 مهر 1391, 12:53 عصر
من اصلا طرز نوشتنت رو نمیفهمم .مگه نباید اول کلاس را تعریف کنی یعنی تابع هارو بنویسی و بعد تو تعریف توابع دستوراشون رو نوشت.پس این چه جور نوشتنه؟
این چیه؟سازنده هست یا تابع؟

kasr zarb(kasr k)
کد خودم رو وقتی کامپایل میکنم فقط بهم عدد 2011 رو میده همش.هرچی وارد میکنم همین رو میده .
اشکال چیه؟

vb8334
شنبه 29 مهر 1391, 20:18 عصر
به هر دو صورت میشه همونجوری که خودم نوشتم من دیگه اعلان نکردم گفتم این تابع ضرب برای کسر ولی شما می تونی اعلان کنی بعد استفاده کنی .

من کد شما رو اجرا کردم ولی 2011 نمیده جواب اشتباه میده ولی 2011 نمیده؟

اینجوری هم میشه.

#include <iostream>

using namespace std;

class kasr
{
public:

float soorat;
float makhraj;
kasr zarb(kasr k);
void print()
{
cout<<"zarb:"<<soorat<<"/"<<makhraj;
}



};
kasr kasr::zarb(kasr k)
{

kasr result;
result.soorat=k.soorat*soorat;
result.makhraj=k.makhraj*makhraj;

return result;

}
int main()
{

kasr k1;
kasr k2;

k1.soorat=5;
k1.makhraj=3;

k2.soorat=2;
k2.makhraj=6;

k1.zarb(k2).print();



return 0;
}

alirah84
شنبه 29 مهر 1391, 20:32 عصر
میشه این برنامه رو بدون سازنده نوشت ؟یعنی همین طوری که من نوشتم.