وبلاگ تخصصی کامپیوتر

آموزش برنامه نویسی

وبلاگ تخصصی کامپیوتر

آموزش برنامه نویسی

تماس با ما

سلام خدمت علاقمندان به برنامه نویسی کامپیوتر

چنانچه سوال یا درخواستی در مورد زبان سی شارپ وسی پلاس و دلفی وپاسکال و ویژال بیسیک و aspوپایگاه داده اسکیوال داشتید ایمیل بزنید تا بهتون کمک کنم.

موارد بشرح زیر

1-ساخت برنامه های کارگزینی

2-برنامه های انبارداری

3-برنامه ارسال اس ام اس 

4-برنامه های تحت وب

5-برنامه ها و مسائل مربوط به دروس سیستم های شی گرا و هوش مصنوعی

آدرس ایمیل من:

emami.mrd@gmail.com

حل مسئله کشیش ها و آدمخوارها:

 

سه کشیش و سه آدمخواردر یک سمت رودخانه قراردارند .چطور میشه با یک قایق که توانایی
حمل حداکثر دو نفر را دارد آنها را به سمت دیگر رودخانه انتقالدهیم که در سمتی که قایق نیست تعداد کشیش ها از آدمخوارها بیشتر و بلعکس تعداد آدمخوارها از کشیش ها بیشتر نشود. 

 

برگردیم سر مسالهٔ اصلی‌ خودمون. برای حل این مساله با استفاده از درختا، یه سری اومدن گفتن که بیایم یه درخت بسازیم که به جای اینکه میوش گیلاس باشه، میوش (x,y,z) باشه! (اینم یه فرق دانشمندانه انفورماتیک با آدم های معمولی‌. به جای اینکه درختشون گیلاس و‌ خرمالو و‌ این جور چیزا بده، (x,y,z) میده!!) و اما معنی (x,y,z) چیه؟ فرض کنین که رودخونه، یه سمتش اسمش هست A و سمت دیگش اسمش هست B. و فرض کنیم که همهٔ آدم ها و‌ همهٔ آدم خورها، الان سمت A قرار دارند و‌ میخوان برن سمت B.

x تعداد آدم ها رو در سمت A نمایش میده
y تعداد آدم خورها رو در سمت A نمایش میده
و z هم میتونه دو مقدار به خودش بگیره. یکی‌ صفر که نشون میده قایق سمت B هستش و دیگری یک که نشون میده قایق سمت A هستش.
توجه کنید x و y همیشه بین صفر و‌ سه هستن.

بازی همیشه در وضعیت (3,3,1) شروع می‌شه.یعنی‌ آدم ها و آدم خور ها و قایق هر سه در سمت A قرار دارن. و هدف ما از انجام بازی رسیدن به وضعیت (0,0,0) هستش. یعنی‌ آدم خورها و‌ آدم ها و‌ قایق هر سه در طرف B قرار بگیرن. از اینجا به بعد ساختن درخت برعکس! شروع می‌شه.

اجازه بدید از اینجا به بعد رو با یه شکل توضیح بدم.


همینطور که می‌بینید بالای بالا ریشهٔ درخت قرار داره. یعنی‌ وضعیت (3,3,1) که معنیش اینه که آدم خورها و‌ آد‌م ها و‌ قایق همشون سمت A قرار دارن. قدم بعدی شاخ و برگ دادن به درخته.اگر یکی از آدم ها سوار قایق بشه و بره اون طرف، وارد وضعیت (2,3,0) میشیم. اما این وضعیت قابل قبول نیست. چون تعداد آدم خورها در سمت A برابر ۳ میشه و تعداد آدم ها، برار ۲. پس آدم ها خورده می شن. از اونجایی که این وضعیت قابل قبول نیست، اون رو به رنگ قرمز در می آریم. و اما یک وضعیت قابل قبول می تونه وضعیت (3,2,0) باشه. یعنی یکی از آدم خورها سوار قایق شده و به سمت B رفته.خلاصه این کار رو ادامه می دیم تا تمامی وضعیت هایی که در بالا مشاهده می کنید، تولید بشن. این کار رو باز هم ادامه میدیم، و باز هم ادامه می دیم و انقدر ادامه میدیم تا به وضعیت (0,0,0) برسیم.
 

سیستم های شی گرا

 

 پروژه درس سیستم های شی گرا

 

کلاسی بنام چند جمله ای طراحی کنید. نمایش داخلی یک چند جمله ای آرایه ای از جملات آن چند جمله ای است هر جمله از ضریب و توان تشکیل شده است این کلاس بایستی دارای:

  1. توابع سازنده
  2. نابود کننده 
  3. توابع خواندن و نوشتن
  4. سربارگذاری اپراتورهای +, -, =, *, =+, =-, =*, ,  []

 

جلسه اول: 

  

کلاسی برای چند جمله ای ایجاد کنید نمایش داخلی کلاس چند جمله ای (polynominal) آرایه ای از جملات است هر چند جمله حاوی یک ضریب و یک توان است به عنوان مثال جمله 2*4 دارای ضریب 2 و توان 4 است. 

  

#include<iostream>

using namespace std; 

const int p=50;

class jomle{

            friend class polynomial;

            friend ostream &operator<<(ostream &,polynomial &);

            friend istream &operator>>(istream &,polynomial &);

            friend polynomial operator-(polynomial a,polynomial b);

            friend polynomial operator+(polynomial a,polynomial b);

            friend polynomial operator*(polynomial a,polynomial b);

            friend polynomial operator*=(polynomial &a,polynomial b);

            friend polynomial operator+=(polynomial &a,polynomial b);

            friend polynomial operator-=(polynomial &a,polynomial b);

            friend polynomial operator++(polynomial &a,int);

            friend polynomial operator++(polynomial &a);

public:

            virtual void delta(polynomial &poly){cout<<"virtual"<<endl;}

            jomle(int z=0,int t=0):zarib(z),tavan(t){}

            ~jomle(){cout<<"destructor"<<endl;}

private:

          int zarib;

          int tavan;

};

class polynomial:public jomle{

             friend ostream &operator<<(ostream &,polynomial &);

             friend istream &operator>>(istream &,polynomial &);

             friend polynomial operator-(polynomial a,polynomial b);

             friend polynomial operator+(polynomial a,polynomial b);

             friend polynomial operator*(polynomial a,polynomial b);

             friend polynomial operator*=(polynomial &a,polynomial b);

             friend polynomial operator+=(polynomial &a,polynomial b);

             friend polynomial operator-=(polynomial &a,polynomial b);

             friend polynomial operator++(polynomial &a,int);

             friend polynomial operator++(polynomial &a);

public:

             polynomial polynomial::operator[](int i){

                    polynomial temp;

                         temp.array[0].tavan=array[i].tavan;

                         temp.array[0].zarib=array[i].zarib;

                   return temp;

             }

private:

           int arraysize;

           jomle array[p];

   };