Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 14 kết quả

Đề tài: Bài toán Lớp đa giác.Mong mọi người giúp đỡ

  1. #1
    Ngày gia nhập
    02 2009
    Nơi ở
    Lập thạch-Vĩnh phúc
    Bài viết
    142

    Mặc định Bài toán Lớp đa giác.Mong mọi người giúp đỡ

    Tớ có đề :
    Xây dựng lớp đa giác, sau đó sử dụng để viết chương trình giải quyết bài toán sau:cho n đa giác,mỗi đa giác được tạo bởi 1 số điểm trên mặt phẳng tọa độ xOy.Tìm các đa giác có chu vi lớn nhất?
    Tớ thật sự bó tay rồi mong các bạn giúp đỡ tớ.

    Không bạn nào vào xem giúp mình với.Thật sự mình đang rất bí về mặt tư tưởng.Mong các bạn giúp đỡ.

    Sao không thấy bạn nào vậy tớ đang rất đưới về mặt hướng làm.Mong các bạn giúp đỡ

    Tớ chỉ có hướng làm mà không ai giúp à.
    Đã được chỉnh sửa lần cuối bởi Xcross87 : 17-04-2009 lúc 11:16 PM.
    Tôi thề giúp ai giúp đến cùng không bao giờ để bạn thất vọng.Nếu viêc bạn nhờ trông khả năng của tôi.
    C__azx__L

  2. #2
    Ngày gia nhập
    09 2008
    Bài viết
    5

    Bạn tính chu vi băng cách tính tổng độ dài các cạnh với nhau, độ dài các cạnh được tính bởi công thức d=sprt(spr(xa-xa)+sqr(ya-yb)). Rồi so sánh các chu vi với nhau.

  3. #3
    Ngày gia nhập
    04 2008
    Nơi ở
    HCMC
    Bài viết
    251

    Trước hết bạn tạo 1 class Diem gồm có 2 toạ độ x,y của điểm
    Sau đó tạo class Dagiac là mảng các điểm (làm bằng dslk thì càng tốt)
    Trong class Dagiac viết hàm tính chu vi
    C++ Code:
    1. for(;;){cout<<"Busy"<<endl;}
    2. system("cls");
    Hãy ủng hộ cho quỹ phát triển cộng đồng C Việt
    http://congdongcviet.com/quyphattrien-congdongcviet.cpp

  4. #4
    Ngày gia nhập
    02 2009
    Nơi ở
    Lập thạch-Vĩnh phúc
    Bài viết
    142

    nhưng còng phải tìm chu vi lơn nhất của dãy Đagiac và ghi đọc tệp nếu làm thienthan34 thì những cái này nhét tất vào hàm main à.Mong hai bạn xem lại giúp

    PHP Code:
    #include<iostream.h>
    #include<conio.h>
    #include<math.h>
    #include<stdio.h>
    #include<fstream.h>
    #include<ctype.h>
    #include<stdlib.h>
    class Diem
    {
        protected:
        
    int x;
        
    int y;
        public:
        
    friend class Da_giac;
        
    friend class Day_DG;
        
    Diem()
        {
        
    x=y=0;
        }
        
    Diem(int x1,int y1)
        {
        
    x=x1;
        
    y=y1;
        }
        
    float khoang_cach(Diem d2)
        {
          return 
    sqrt(pow(x-d2.x,2)+pow(y-d2.y,2));
        }
        
    void nhap()
        {
        
    cout<<"\nNhap x= ";
        
    cin>>x;
        
    cout<<"\nNhap y= ";
        
    cin>>y;
        }
        
    void xuatd()
        {
        
    cout<<"\ntoa do x,y: ";
        
    cout<<"x= "<<x<<" "<<"y= "<<y;
        }
        
    int getx()
        {
            return 
    x;
        }
        
    int gety()
        {
            return 
    y;
        }

    };
    class 
    Dagiac
    {
        private:
        
    int n;
        
    Diem *d;
        public:
        
    void nhap();
        
    void hien();
        
    float chuvi();
        
    int getn()
        {
        return 
    n;
        }


    };
    void Dagiac::nhap()
    {
        
    cout<<"\nNhap so luong dinh";
        
    cin>>n;
        
    d=new Diem[n+1];
        for(
    int i=0;i<n;i++)
        {
            
    d[i].nhap();
        }
    }
    void Dagiac::hien()
    {
        for(
    int i=1;i<=n;i++)
        {
            
    d[i].xuatd();

        }
    }
    float Dagiac::chuvi()
    {

        
    float chuvi=0;
        
    float s=0;
        
    float s1=0;
        for(
    int  i=1;i<n;i++)
        {
            
    s+=d[i].khoang_cach(d[i+1]);
        }
        
    s1=d[n].khoang_cach(d[1]);
            for(
    i=1;i<n;i++)
            {
                
    chuvi+=d[i].khoang_cach(d[i+1]);
            }
            
    chuvi+=d[n].khoang_cach(d[1]);
        return 
    chuvi;
    }
    void main()
    {
        
    Dagiac *dg;
        
    int m;
        
    cout<<"Nhap vao so luong da giac";
        
    cin>>m;
        
    dg=new Dagiac[m+1];
        for(
    int i=0;i<m;i++)
        {
        
    dg[i].nhap();
        }
        for(
    i=0;i<m;i++)
        {

        
    dg[i].hien();
        
    cout<<"\nDay la chu vi"<<dg[i].chuvi();
        }
        
    getch();

    đay là code mình mới làm theo hướng hai bạn
    Đã được chỉnh sửa lần cuối bởi Xcross87 : 17-04-2009 lúc 11:16 PM.
    Tôi thề giúp ai giúp đến cùng không bao giờ để bạn thất vọng.Nếu viêc bạn nhờ trông khả năng của tôi.
    C__azx__L

  5. #5
    Ngày gia nhập
    04 2008
    Nơi ở
    HCMC
    Bài viết
    251

    Vì hàm chu vi được viết trong class đagiac mà hàm chuvimax thì cũng thuộc dagiac vậy làm sao để sử dụng kết quả vừa tính chuvi để tìm chu vi max
    Hàm chuvimax bạn nên viết ở ngoài class dagiac
    C++ Code:
    1. //Đoạn này sử dụng code của bạn.
    2. float chuvimax();
    3. void main()
    4. {
    5.  
    6.     cout<<"Chu vi max"<<chuvimax();
    7.  
    8. }  
    9. float chuvimax()
    10. {
    11.     Dagiac *dg;
    12.     int m;
    13.     cout<<"Nhap vao so luong da giac";
    14.     cin>>m;
    15.     dg=new Dagiac[m+1];
    16.     for(int i=0;i<m;i++)
    17.     {
    18.         dg[i].nhap();
    19.     }
    20.     for(i=0;i<m;i++)
    21.     {
    22.        
    23.         dg[i].hien();
    24.         cout<<"\nDay la chu vi"<<dg[i].chuvi();
    25.     }
    26.     float max =dg[0].chuvi();
    27.     for(i=1;i<m;i++)
    28.     {
    29.         if(dg[i].chuvi()>max)
    30.             max = dg[i].chuvi();
    31.     }
    32.     return max;
    33.  
    34. }
    Đã được chỉnh sửa lần cuối bởi thienthan34 : 17-04-2009 lúc 10:36 AM. Lý do: Chi tiết
    C++ Code:
    1. for(;;){cout<<"Busy"<<endl;}
    2. system("cls");
    Hãy ủng hộ cho quỹ phát triển cộng đồng C Việt
    http://congdongcviet.com/quyphattrien-congdongcviet.cpp

  6. #6
    Ngày gia nhập
    02 2009
    Nơi ở
    Lập thạch-Vĩnh phúc
    Bài viết
    142

    Mặc định Bài toán Lớp đa giác.Mong mọi người giúp đỡ

    Thanks.tớ hiểu ý bạn rồi.nhưng còn phàn ghi vào tệp tớ muốn ghi sô lượng đa giác,số luọng đỉnh, tọa độ các đỉnh.Vậy có thể viết hàm khôg viết vào hàm main được không.
    Tôi thề giúp ai giúp đến cùng không bao giờ để bạn thất vọng.Nếu viêc bạn nhờ trông khả năng của tôi.
    C__azx__L

  7. #7
    Ngày gia nhập
    04 2008
    Nơi ở
    HCMC
    Bài viết
    251

    Được tuy nhiên sửa 1 chút thế này để không mất dg
    C++ Code:
    1. float chuvimax(Dagiac dg[],int m);
    2. void main()
    3. {
    4.  
    5.     Dagiac *dg;
    6.     int m;
    7.     cout<<"Nhap vao so luong da giac";
    8.     cin>>m;
    9.     dg=new Dagiac[m+1];
    10.     for(int i=0;i<m;i++)
    11.     {
    12.         dg[i].nhap();
    13.     }
    14.     for(int i=0;i<m;i++)
    15.     {
    16.        
    17.         dg[i].hien();
    18.         cout<<"\nDay la chu vi"<<dg[i].chuvi();
    19.     }
    20.     chuvimax(dg,m);
    21.  
    22.  
    23.  
    24. }  
    25. float chuvimax(Dagiac dg[],int m)
    26. {
    27.    
    28.  
    29.     float max =dg[0].chuvi();
    30.     for(i=1;i<m;i++)
    31.     {
    32.         if(dg[i].chuvi()>max)
    33.             max = dg[i].chuvi();
    34.     }
    35.     return max;
    36.  
    37. }
    Chưa test thử đoạn code bạn viết đâu nhé.Nhưng đa giác thì số điểm nên yêu cầu người dùng nhập >=3
    C++ Code:
    1. for(;;){cout<<"Busy"<<endl;}
    2. system("cls");
    Hãy ủng hộ cho quỹ phát triển cộng đồng C Việt
    http://congdongcviet.com/quyphattrien-congdongcviet.cpp

  8. #8
    Ngày gia nhập
    02 2009
    Nơi ở
    Lập thạch-Vĩnh phúc
    Bài viết
    142

    thanks bạn nhiều.Về hàm chuvimax thì ok rồi.nhung tớ đang mắc phần ghi tệp tớ muốn phàn ghi tệp không ở hàm main vậy phải viết như thế nào.

    thienthan34 chỉ giúp tớ phần ghi tệp với, làm theo cách này không ghi tệp.
    Đã được chỉnh sửa lần cuối bởi Xcross87 : 17-04-2009 lúc 11:16 PM.
    Tôi thề giúp ai giúp đến cùng không bao giờ để bạn thất vọng.Nếu viêc bạn nhờ trông khả năng của tôi.
    C__azx__L

  9. #9
    Ngày gia nhập
    04 2008
    Nơi ở
    HCMC
    Bài viết
    251

    http://forums.congdongcviet.com/showthread.php?t=15303 --> ở đây có file của code_gate hướng dẫn về ghi file nhé.
    C++ Code:
    1. for(;;){cout<<"Busy"<<endl;}
    2. system("cls");
    Hãy ủng hộ cho quỹ phát triển cộng đồng C Việt
    http://congdongcviet.com/quyphattrien-congdongcviet.cpp

  10. #10
    Ngày gia nhập
    02 2009
    Nơi ở
    Lập thạch-Vĩnh phúc
    Bài viết
    142

    Thanks các bạn đã giúp đỡ và hôm nay tớ post bài viết này lên mong các bạn đóng góp ý kiến ch chuơng trình của tớ
    PHP Code:
    #include<iostream.h>
    #include<conio.h>
    #include<math.h>
    #include<stdio.h>
    #include<fstream.h>
    #include<ctype.h>
    #include<stdlib.h>
    #include<iomanip.h>
    FILE *f;
    class 
    Diem
    {
        private:
        
    int x;
        
    int y;
        public:
        
    friend class Dagiac;
        
    Diem()
        {
        
    x=y=0;
        }
        
    Diem(int x1,int y1)
        {
            
    x=x1;
            
    y=y1;
        }
        
    float khoang_cach(Diem d2)
        {
            return 
    sqrt(pow(x-d2.x,2)+pow(y-d2.y,2));
        }
        
    void loadfile()
        {
            
    fscanf(f,"%d",&x);
            
    fscanf(f,"%d",&y);
        }
        
    void nhap()
        {
            
    cout<<"\nNhap toa do x=";
            
    cin>>x;
            
    cout<<"\nNhap toa do y=";
            
    cin>>y;
        }
        
    void hien()
        {
            
    cout<<"\ntoa do x,y: ";
            
    cout<<"x= "<<x<<" "<<"y= "<<y;
        }
        
    int getx()
        {
            return 
    x;
        }
        
    int gety()
        {
            return 
    y;
        }

    };
    class 
    Dagiac
    {
        public:
        
    Diem *d;
        
    int n;
        
    int t;
        
    void loadfile();
        
    void nhap();
        
    void hien();
        
    void sua();
        
    float chuvi();
        
    int getn()
        {
            return 
    n;
        }
        
    int gett()
        {
            return 
    t;
        }
    };
    void Dagiac::loadfile()
    {
            
    fscanf(f,"%d",&n);
            if(
    n>2)
            {
                
    d=new Diem[n+1];
                for(
    int i=0;i<n;i++)
                {
                
    d[i].loadfile();
                }
        
            }
        else
            
    cout<<"\nNhap lai so dinh vao tep.";
        
    }
    void Dagiac::nhap()
    {
        
        do
        {
            
    cout<<"\nNhap vao toa do dinh t=";
                
    cin>>t;
                if(
    t>2)
            {
                    
    d=new Diem[t+1];
                        for(
    int i=0;i<t;i++)
                    {
                        
    cout<<"\nDiem thu"<<i+1<<":";
                        
    d[i].nhap();
                    }
                for(
    i=1;i<t;i++)
                    for(
    int j=i+1;j<=t;j++)
                        if(
    d[i].x==d[j].x&&d[i].y==d[j].y)
                                  {    
    cout<<"\nBan da nhap sai. Ban can nhap lai toa do cho da giac.";

                            for(
    i=1;i<=t;i++)
                                {
                                    
    cout<<"\nDiem thu"<<i<<":";
                                    
    d[i].nhap();
                                } 
                                  }
            
    float a,b,c;
            
    int ok=0;
            for(
    i=1;i<t-1;i++)
                for(
    j=i+1;j<t;j++)        
                    for(
    int k=j+1;k<=t;k++)
                        {
                            
    sqrt(pow(d[i].x-d[j].x,2)+pow(d[i].y-d[j].y,2));
                            
    sqrt(pow(d[i].x-d[k].x,2)+pow(d[i].y-d[k].y,2));
                            
    sqrt(pow(d[j].x-d[k].x,2)+pow(d[j].y-d[k].y,2));
                            if(
    a>b)
                            {
                                if(
    a>c)
                                {
                                    if(
    a==(b+c))
                                    {
                                        
    ok 1;
                                    }
                                }
                                else
                                {
                                    if(
    c==(a+b))
                                    {
                                        
    ok 1;
                                    }
                                }
                            }
                            else
                            {
                                if(
    b>c)
                                {
                                    if(
    b==(a+c))
                                    {
                                        
    ok 1;
                                    }
                                }
                                else
                                {
                                    if(
    c==(a+b))
                                    {
                                        
    ok 1;
                                    }
                                }
                            }
                        }    
            if(
    ok==1)
                {
                    
    cout<<"\nBan da nhap sai. Ban can nhap lai toa do cho da giac.";
                    
    cout<<"\nNhap lai so diem cua da giac.";
                }
            else break;
            }
                else 
    cout<<"\nNhap lai so dinh vao tep.";
        }while(
    1);

    }

    void Dagiac::hien()
    {
        for(
    int i=0;i<n;i++)
        {
            
    d[i].hien();
        }
    }
    float Dagiac::chuvi()
    {

        
    float chuvi=0;
        
    //float s=0,s1=0;
        /*for(int  i=1;i<n;i++)
        {
            s+=d[i].khoang_cach(d[i+1]);
        }
        s1=d[n].khoang_cach(d[1]);*/
            
    for(int i=1;i<n;i++)
            {
                
    chuvi+=d[i].khoang_cach(d[i+1]);
            }
            
    chuvi+=d[n].khoang_cach(d[1]);
        return 
    chuvi;
        }
    float chuvimax(Dagiac dg[],int m)
    {
        
    float max=dg[0].chuvi();
        for(
    int i=0;i<m;i++)
        {
            if(
    dg[i].chuvi()>max)
            
    max=dg[i].chuvi();
        }
        return 
    max;
    }

    void ghitep(char *tep,Dagiac dg[],Dagiac dg1[],int m,int n)
    {
        
    ofstream f;
        
    f.open(tep,ios::out|ios::noreplace);
        if(
    f.bad())
        {
            
    cout<<"\nGhi gia tri moi vao tep "<<tep;
            
    cout<<"\nBam C De ghi";
            
    int ch=getch();
            if(
    toupper(ch)=='C')
            {
                
    f.close();
                
    f.open(tep);
            }
            else
                exit(
    1);
        }
        
    f<<m<<endl;
        for(
    int i=0;i<m-n;i++)
        {
            
    f<<dg[i].getn()<<endl;
            for(
    int j=0;j<dg[i].getn();j++)
            {
                
    f<<dg[i].d[j].getx()<<setw(2);
                
    f<<dg[i].d[j].gety()<<endl;
            }
        }
        for(
    i=0;i<n;i++)
        {
            
    f<<dg1[i].gett()<<endl;
                {
                for(
    int j=0;j<dg1[i].gett();j++)
                    {
                    
    f<<dg1[i].d[j].getx()<<setw(2);
                    
    f<<dg1[i].d[j].gety()<<endl;
                    }
                }
        }
        
    f.close();
    }
    int  menu()
    {
        
    clrscr();
        
    int chon;
        
    gotoxy(20,5);cout<<"Lua chon cac chuc nang theo so";
        
    gotoxy(20,6);  cout<<" ------------------------------------------";
        
    gotoxy(20,8);  cout<<"1.HIEN DAY DA GIAC";
        
    gotoxy(20,10); cout<<"2.THEM MOT DA GIAC VAO DAY";
        
    gotoxy(20,12); cout<<"3.SUA TOA DO DA GIAC MOT DA GIAC BAT KI TRONG DAY";
        
    gotoxy(20,14); cout<<"4.XOA MOT DA GIAC BAT KI TRONG DAY";
        
    gotoxy(20,16); cout<<"5.DA GIAC CO LON NHAT VA TOA DO CUA NO";
        
    gotoxy(20,18); cout<<"0.THOAT";
        
    gotoxy(20,21); cout<<"-------------------------------";
        
    gotoxy(20,24); cout<<"MOI CHON CHUC NANG:";

       
    cin>>chon;
       return 
    chon;

    }
    void main()
    {       
    //textmode(C80);
        
    textcolor(CYAN);
        
    clrscr();
        
    Dagiac *dg;
        
    Dagiac *dg1;
        
    int chon=1;
        
    int m;
        
    int k=0;
        
    int s;
        
    int x;
    while(
    chon)
    {
        
    chon=menu();
        switch(
    chon)
        {
        case 
    1:
        {
            
    f=fopen ("azx.txt","rt");
                if (
    f==NULL)
                    {
                    
    cout<<"\nloi mo tep";
                    exit(
    1);
                    }
            
    fscanf(f,"%d",&m);
                        
    dg=new Dagiac[m+1];
                for(
    int i=0;i<m;i++)
                    
    dg[i].loadfile();
                for(
    i=0;i<m;i++)
                {
                    
    cout<<"\nDa giac thu "<<i+1;
                    
    dg[i].hien();
                    
    cout<<"\nDay la chu vi= "<<dg[i].chuvi();
                }
                
    getch();
                break;
        }
        case 
    2:
        {
            
    f=fopen ("azx.txt","rt");
                if (
    f==NULL)
                    {
                    
    cout<<"\nloi mo tep";
                    exit(
    1);
                    }
            
    fscanf(f,"%d",&m);
                
    dg=new Dagiac[m+1];
                for(
    int i=0;i<m;i++)
                
    dg[i].loadfile();
              
    cout<<"\Nhap so luog da giac can them k=";
              
    cin>>k;
              
    dg1=new Dagiac[k+1];
              for(
    i=0;i<k;i++)
              {
               
    dg1[i].nhap();
              }
              
    ghitep("azx.txt",dg,dg1,m+k,k);
              
    getch();
              break;
        }
        case 
    3:
        {
            
    f=fopen ("azx.txt","rt");
                if (
    f==NULL)
                    {
                    
    cout<<"\nloi mo tep";
                    exit(
    1);
                    }
            
    fscanf(f,"%d",&m);
                
    dg=new Dagiac[m+1];
                for(
    int i=0;i<m;i++)
                
    dg[i].loadfile();
            
    dg1=new Dagiac[k+1];
            
    cout<<"\nNhap vi tri can sua s=";
            
    cin>>s;
            for(
    i=0;i<m;i++)
            if(
    i==s)
            {
            
    dg[s].nhap();
            }
          
    ghitep("azx.txt",dg,dg1,m+k,k);
          
    getch();
          break;

        }
        case 
    4:
        {
            
    f=fopen ("azx.txt","rt");
                if (
    f==NULL)
                    {
                    
    cout<<"\nloi mo tep";
                    exit(
    1);
                    }
            
    fscanf(f,"%d",&m);
                
    dg=new Dagiac[m+1];
                for(
    int i=0;i<m;i++)
                {
                
    dg[i].loadfile();
                }
            
    dg1=new Dagiac[k+1];
            
    cout<<"\nNhap vao vi tri can xoa ";
            
    cin>>x;
            for(
    i=x;i<m;i++)
                
    dg[i]=dg[i+1];
            
    ghitep("azx.txt",dg,dg1,m+k-1,k);
            
    getch();
            break;
        }
        case 
    5:
            {
            
    f=fopen ("azx.txt","rt");
                if (
    f==NULL)
                    {
                    
    cout<<"\nloi mo tep";
                    exit(
    1);
                    }
                
    fscanf(f,"%d",&m);
                
    dg=new Dagiac[m+1];
                for(
    int i=0;i<m;i++)
                
    dg[i].loadfile();
                
    float max=chuvimax(dg,m);
            
    cout<<"\nDa giac co chu vi lon nhat p= "<<chuvimax(dg,m);
            
    cout<<"\nToa do cua no";
            for(
    i=0;i<m;i++)
                if(
    max==dg[i].chuvi())
                
    dg[i].hien();
            
    getch();
            break;
            }
        }
    }

    Mong các bạn giup đỡ
    Tôi thề giúp ai giúp đến cùng không bao giờ để bạn thất vọng.Nếu viêc bạn nhờ trông khả năng của tôi.
    C__azx__L

Các đề tài tương tự

  1. Học C++ bắt đầu từ đâu, mong các anh giúp đỡ.......
    Gửi bởi student123 trong diễn đàn Đào tạo CNTT
    Trả lời: 10
    Bài viết cuối: 06-02-2017, 11:35 PM
  2. Mong được các anh/chị giúp đỡ!
    Gửi bởi louis.txt trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 15-08-2013, 11:51 AM
  3. mong các bạn rãnh giúp mình với !
    Gửi bởi duongthanhhung trong diễn đàn Nhập môn lập trình Java
    Trả lời: 0
    Bài viết cuối: 06-08-2013, 10:18 AM
  4. Em có vài câu hỏi về cây nhị phân. Mong các bác chỉ giúp!?
    Gửi bởi Hiep_si_Dui trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 8
    Bài viết cuối: 28-06-2009, 05:24 PM
  5. Bài toán đường đi của vua mong giúp đỡ
    Gửi bởi possidon trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 16-04-2009, 10:07 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn