درخواست کمک درمورد خطایابی و اشکال زدایی این برنامه

mamadshoshteri

New Member
سلام دوستان یه برنامس بعد من اصلا از کار با کلاس ها هیچی نمیفهمم توی C تازه ++C رو شروع کردم ممنون میشم کمک کنید فردا باید ببرم دانشگاه این پروژه رو با یکی دیگه که توی اون هم موندم :cry:

سوال: با استفاده از ترکیب دو کلاس مستطیل تعریف کنید مساحت و محیط را حساب کنید


اینم کدی که من نوشتم :lol:

کد:
#include<iostream.h>
#include<conio.h>
#include<math.h>

class point
{public:
        point (int c=0,int d=1):x(c), y(d){};
        void setpoint (int c,int d) {x=c;y=d;}
        private:
                  int x,y;};   
                  class line
                        {public:
                          line (int a=0,int b=1,int d=1,int e=0);
                      void setline (int a,int b,int d,int e) 
                                 {
                                 p1.setpoint(a,b);
                                p2.setpoint(d,e);
                                }
                          float tol (int ,int )
                                 { return
                          sqrt(((p2.d-p1.a)*(p2.d-p1.a))+((p2.e-p1.b)*(p2.e-p2.b)));}
                          private:
                                  point p1,p2;};
                                  class rectangl{ 
                                        public: 
                                                void setrectangl()
                                                {l1.setline(p1,p2);
                                                l2.setline(p1,p2);}
                                                float mohit (int l1,int l2)
                                                {return (l1.tol*l2.tol);}
                                                void masahat ()
                                                {return 2*(l1.tol+l2.tol);}};
                                         private:
                                                                 line l1,l2;
                                                 };
                                                 int main (){
                                                     regtangl r;
                                                     r(3,1,1,3,5,6);
                                                     r.setregtangl;
                                                     r.masahat;
                                                     r.mohit;
                                                     getch();}
 

the_king

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

نکته ها :
1) اگه متغیر های x و y داخل کلاس point رو private تعریف کنید کلاس line بهشون دسترسی مستقیم نخواهد داشت
و در نتیجه نمی توانید طول خط رو در کلاس line حساب کنید. ساده ترین راه حل اینه که x و y رو public تعریف کنید.

2) فرمول محیط و مساحت رو جابجا نوشته بودید. تابع محیط را به اسم Perimeter و مساحت رو به Area تغییر دادم.

3) توابعی که داخل کلاس ها تعریف می کنید با توابع دیگه فرقی ندارند، موقع فراخوانی شان پارانتز () فراموش نشود.

کد:
#include <iostream.h>
#include <conio.h>
#include <math.h>

class point
{
    public :
        int x, y;

        void setpoint(int x, int y)
        {
            this->x = x;
            this->y = y;
        }

        point(int x, int y)
        {
            setpoint(x, y);
        }

        point()
        {
            setpoint(0, 0);
        }
};

class line
{
    private :
        point p1, p2;

    public :
        void setline(int x1, int y1, int x2, int y2)
        {
            p1.setpoint(x1, y1);
            p2.setpoint(x2, y2);
        }

        line()
        {
            setline(0, 0, 0, 0);
        }

        line(int x1, int y1, int x2, int y2)
        {
            setline(x1, y1, x2, y2);
        }

        float length()
        {
            return sqrt(pow(p2.x - p1.x, 2) + pow(p2.y - p1.y, 2));
        }
};

class rectangle
{
    private :
        line l1, l2, l3, l4;

    public :
        void setrectangle(int x1, int y1, int x2, int y2)
        {
            l1.setline(x1, y1, x2, y1);
            l2.setline(x2, y1, x2, y2);
            l3.setline(x2, y2, x1, y2);
            l4.setline(x1, y2, x1, y1);
        }

        rectangle()
        {
            setrectangle(0, 0, 0, 0);
        }

        rectangle(int x1, int y1, int x2, int y2)
        {
            setrectangle(x1, y1, x2, y2);
        }

        float perimeter()
        {
            return l1.length() + l2.length() + l3.length() + l4.length();
        }

        float area()
        {
            return l1.length() * l2.length();
        }
};

فرق بین کدهای شیء r و شیء s در این است که شیء r موقع تعریف شدن مختصات (x1, y1) و (x2, y2)
را دریافت می کند و شیء s بعد از تعریف شدن و توسط تابع ()setrectangle

attachment.php


کد:
int main ()
{
[B][COLOR="Blue"]    rectangle r = rectangle(3,1,5,6);
    cout << "Perimeter = " << r.perimeter() << endl;
    cout << "Area = " << r.area() << endl;[/COLOR][/B]
[COLOR="DarkRed"][B]    rectangle s;
    s.setrectangle(3,1,5,6);
    cout << "Perimeter = " << s.perimeter() << endl;
    cout << "Area = " << s.area() << endl;[/B][/COLOR]
    getch();
}
 

پیوست ها

  • rectangle.gif
    rectangle.gif
    1.4 کیلوبایت · بازدیدها: 3

جدیدترین ارسال ها

بالا