برنامه نویسان کامپیوتر

این وب سایت به منظور استفاده دانشجویان دانشگاه شهید بهشتی کرج ایجاد شده

برنامه نویسان کامپیوتر

این وب سایت به منظور استفاده دانشجویان دانشگاه شهید بهشتی کرج ایجاد شده

جلسه دوازدهم

ادامه مباحث کلاس

 

کلاس تاریخ (Date ) شامل مقادیر خصوصی روز و ماه و سال بنویسید که دارای چهار سازنده باشد وتابعی به نام showdate بنویسید که تاریخ را به شکل   روز/ماه/سال نشان دهد.

class Date

{

          private:

                   int year;

                   int month;

                   int day;

          public:

                   Date(){year=1390;month=1;day=1;}

                   Date(int d){ year=1390;

month=1;

day=(d>0 && d<=31)?d:1;}

                   Date(int m,int d){ year=1390;

month=(m>=1 && m<=12)?m:1;

day=(d>0 && d<=31)?d:1;}

                   Date(int y,int m,int d){

                                                year=(y>=1 && y<=1400)?y:1;

month=(m>=1 && m<=12)?m:1;

day=(d>0 && d<=31)?d:1;}

}

void showdate()

{

cout<<year<<”/”<<month<<”/”<<day;

}

};

کلاسی برای کسر بنویسید به نام Kasr که دارای دو مقدار خصوصی soorat و makhraj دارای 3 سازنده باشد و  تابعی که مقدار آن کسر را به صورت مقداری اعشاری برگرداند  و تابع دیگری که کسر را به صورت “soorat/makhraj” نشان دهد.

class kasr

{

int soorat;

int makhraj;

public:

kasr();

kasr(int s);

kasr(int s,int m);

float value();

void show();

};

kasr:: kasr()

{

          soorat=1;

          makhraj=1;

}

kasr:: kasr(int s)

{

          soorat=s;

          makhraj=1;

}

kasr::kasr(int s,int m)

{

soorat=s;

if(m!=0) makhraj=m;else makhraj=1;

}

 

float kasr::value()

{

return (float)soorat/makhraj;

}

void kasr::show()

{

          cout<<soorat<<”/”<<makhraj;

}

void main()

{kasr k1,k2(7);

int s,m;

cout<<”\nenter soorat, makhraj:”;

cin>>s>>m;

kasr k3(s,m);

cout<<”\n k1=    “;

k1.show();

cout<<”\t”<<k1.value();

cout<<”\n k2=    “;

k2.show();

cout<<”\t”<<k2.value();

cout<<”\n k3=    “;

k3.show();

cout<<”\t”<<k3.value();

}

 

 

کلاسی برای مثلث بنویسید دارای سه مقدار خصوصی (اندازه های سه ضلع مثلث) سه سازنده داشته باشد (با یک ورودی- دو ورودی – سه ورودی )تابعی برای محیط مثلث داشته باشد و تابعی که مشخص می کند که این مثلث قائم الزاویه هست یا خیر

a^2+b^2=c^2

or

c^2+b^2=a^2

or

c^2+a^2=b^2

جواب:

#include <iostream.h>

#include <conio.h>

 

class mosalas

{

int a;

int b;

int c;

public:

mosalas(int x)

{

a=x;

b=x ;

c=x;

}

mosalas(int x,int y)

{

a=x;

b=y;

c=x+y ;

}

mosalas(int x,int y,int z)

{

a=x;

b=y;

c=z ;

}

void mohit()

{

cout<<"\nmohit="<<(a+b+c);

}

int ghaeme()// آیا قائم الزاویه هست یا خیر

{

if ((a*a+b*b==c*c)||(c*c+b*b==a*a)||(c*c+a*a==b*b))

return 1 ;

else

return 0 ;

}

};

void main()

{

mosalas m1(3);

mosalas m2(4,3);

mosalas m3(6,8,10);

cout<<"\n";

 m1.mohit();

cout<<"\n";

 m2.mohit();

cout<<"\n";

 m3.mohit();

if (m1.ghaeme()==1)

cout<<"\nm1 ghaeme ast";

else

 cout<<"\nm1 ghaeme nist";

if (m2.ghaeme()==1)

cout<<"\nm2 ghaeme ast";

else

cout<<"\nm2 ghaeme nist";

if (m3.ghaeme()==1)

cout<<"\nm3 ghaeme ast";

else

cout<<"\nm3 ghaeme nist";

getch();

}

 

سربارگذاری عملگرها(operator overloading)

: یعنی تعریف تازه ای از عملگرهایی مانند +و-و/و*و++و==و....

 

int x=5,y=4;

int z=x+y;// z=9

فرضا بخواهیم دو نمونه از کلاس کسر را با هم جمع کنیم

 

kasr k1(3,7),k2(7,11);

k1.show(); è3/7

k2.show();è7/11

kasr k3=k1+k2;èERROR

امکان جمع دو کسر را می خواهیم با سربارگذاری عملگر + فراهم کنیم.

شکل کلی سربارگذاری یک عملگر:

 

 نوع خروجی عملگرOperator علامت عملگر(نوع ورودی نام ورودی)

مثلا اگر درون کلاس kasr بنویسیم

 

kasr operator+(kasr k)

{

…………..

}

مفهوم کد فوق این است که می خواهیم برای کلاس کسر عملگر + را تعریف کنیم و از شکل کد فوق مشخص است که نتیجه عملیات یک کسر خواهد بود

int operator==(kasr k)

{

}

مفهوم کد فوق این است که می خواهیم برای کلاس کسر عملگر == را تعریف کنیم و از شکل کد فوق مشخص است که نتیجه عملیات یک عدد صحیح (صفر یا یک) خواهد بود

3/5 + 7/4=(3*4+7*5)/20

a/b+c/d=(a*d+b*c  )/b*d

 کد مربوط به سربارگذاری جمع

kasr operator+(kasr k)

{

          kasr temp;

temp.makhraj=makhraj*k.makhraj;

          temp.soorat=makhraj*k.soorat+soorat*k.makhraj

          return temp;

}

K1,k2

K3=k1+k2

کل کلاس کسر

class kasr

{

int soorat;

int makhraj;

public:

kasr();

kasr(int s);

kasr(int s,int m);

float value();

void show();

 kasr operator+(kasr k)

 {

           kasr temp;

           temp.makhraj= makhraj* k.makhraj;

           temp.soorat=soorat*k.makhraj+makhraj*k.soorat;

           return temp;

 }

  kasr operator*(kasr k)

 {

           kasr temp;

           temp.makhraj= makhraj* k.makhraj;

           temp.soorat=soorat*k.soorat;

           return temp;

 }

          int operator==(kasr k)

          {

                   if(value()==k.value())

                   return 1;

                   else

                   return 0;

          }

};

kasr:: kasr()

{

          soorat=1;

          makhraj=1;

}

kasr:: kasr(int s)

{

          soorat=s;

          makhraj=1;

}

kasr::kasr(int s,int m)

{

soorat=s;

if(m!=0) makhraj=m;else makhraj=1;

}

 

float kasr::value()

{

return (float)soorat/makhraj;

}

void kasr::show()

{

          cout<<soorat<<"/"<<makhraj;

}

void main()

{kasr k1(3,7),k2(2,5);

 

cout<<"\n k1=    ";

k1.show();

cout<<"\t"<<k1.value();

cout<<"\n k2=    ";

k2.show();

cout<<"\t"<<k2.value();

kasr k3=k1+k2;

cout<<"\n k3=    ";

k3.show();

cout<<"\t"<<k3.value();

 kasr k4=k1*k2;

 cout<<"\n k4=    ";

 k4.show();

cout<<"\t"<<k4.value();

int s,m;

cout<<"\nenter soorat , makhraj:";

cin>>s>>m;

kasr k5(s,m);

if (k4==k5) cout<<"\nk4,k5 barabarand";

else cout<<"\nk4,k5 barabar nistand";

}

کلاسی برای مثلث بنویسید با دو مقدار خصوصی قاعده و ارتفاع و سه سازنده و تابع دیگری برای کلاس بنویسید که مساحت مثلث را بدهد. عملگر + را برای کلاس به نحوی سربارگذاری کنید که  جمع دو مثلث یعنی ایجاد مثلثی که قاعده اش حاصل جمع دو قاعده و ارتفاعش حاصل جمع ارتفاع دو مثلث باشد.

Triangle T1(12,7),T2(6,10);

Triangle T3=T1+T2;

انتظار می رود T3 مثلثی باشد با قاعده 18 و ارتفاع 17

#include <iostream.h>

class Triangle

{

          int base;

          int height;

public:

          Triangle(){base=1;

          height=1;

          }

          Triangle(int b){

          base = b;

          height=1;}   

          Triangle(int b,int h){base=b;

          height= h;}

          Triangle operator+ (Triangle t)

          {

                   Triangle temp;

                   temp.base=base+ t.base;

                             temp.height=height + t.height;

                             return temp;

 

          }

          float area()

          {

                   return (float)base*height/2;

          }

                   void show()

                   {

                             cout<<"\nbase="<<base;

             cout<<"\t height="<<height;

                   }

};

 

void main()

{ Triangle T1(2,5),T2(8,3),T3(10,5);

          Triangle T4=T1+T2;

          cout<<"\nT1=";

          T1.show();

          cout<<"\nT2=";

          T2.show();

          cout<<"\nT4=";

          T4.show();

          cout<<"\nmasahate T1="<<T1.area();

          cout<<"\nmasahate T2="<<T2.area();

          cout<<"\nmasahate T4="<<T4.area();

}

 

دانلود فایل مثال ها

(*.cpp)


 

نظرات 0 + ارسال نظر
ایمیل شما بعد از ثبت نمایش داده نخواهد شد