Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Bài tập C++ | Tìm đa giác có chu vi lớn nhất??

  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 tập C++ | Tìm đa giác có chu vi lớn nhất??

    Tớ có 1 bài tap như thế này:Xây dựng lớp đa giác,sau đó sử dụng để viết chương trinh giải quyết bài toán :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 đa giác có chu vi lớn nhất.
    Vậy bạn nào có ý tưởng cho bài này xin cứ trình bày.Thanks các bạn nhiều.

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

    MÌnh có ý tưởng là cho ramdom vị trí đa giác nhờ vào việc ramdom một số điểm trên tọa độ xOy, sau đó tính chu vi của từng cái rồi so sánh. Bác thấy thế nào.
    HÌnh như sắp đến mùa thi bài tập lớn nên diễn đàn mình có nhiều người hỏi bài tập lớn ghê.
    Mình cũng đang làm bài tập lớn, có gì khó hi vọng được các bác giúp đỡ.
    Đã được chỉnh sửa lần cuối bởi duc30121989 : 02-04-2009 lúc 11:45 PM.

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

    còn bạn nào có ý tưởng nưa không nói giứp tơ với.Thanks các bạn nhiều
    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

  4. #4
    Ngày gia nhập
    04 2009
    Bài viết
    3

    Mặc định chu vi đa giác max

    bạn xem thử nhé, mình cũng làm được một ít nhưng thiếu phần ghi đọc file bạn nào có nhã ý xin giúp mình phần ghi đọc file nhé!
    Code:
     #include"stdio.h"
     #include"conio.h"
     #include"math.h"
     #include"string.h"
     #include"iostream.h"
     #include"iomanip.h"
     #include"fstream.h"
     #include"ctype.h"
     #include"stdlib.h"
     #include"dos.h"
     #include"graphics.h"
    //------------------------------------------------------------------------//
     // LOP DIEM
    
     class Diem
     {
     private:
    	int x,y;
     public:
    	Diem()
    	  {
    		 x=0;	 y=0;
    	  }
    	Diem(int x1, int y1)
    	  {
    		this->x=x1;	this->y=y1;
    	  }
    	friend class Dagiac;
    	void nhapdiem();
    	void hiendiem();
    	float khoang_cach(Diem d1);
     };
    //------------------------------------------------------------------------//
     // LOP DA GIAC
    
     class Dagiac:public Diem
     {
    	private:
    		int n;//so dinh cua mot da giac
    		Diem *d;
    	public:
    		friend class Diem;
    		Dagiac()
    		  {
    			n=0;
    		  }
    		Dagiac(int x1, int y1, int n1)
    		  {
    			n=0;
    			d=new Diem[n+1];
    		  }
    		  void nhap_dg();
    		  void hien_dg();
    		  float chu_vi();
    
     };
    //------------------------------------------------------------------------//
     // LOP DAY DA GIAC
    
     class Day_dg: public Dagiac
     {
     private:
    	int N;// N:so da giac
    	Dagiac *dg;
     public:
    	friend class Dagiac;
    	Day_dg()
    	  {
    
    	  }
    	Day_dg(int x1, int y1, int n1, int N1)
    	  {
    		N=N1;
    		dg=new Dagiac[N+1];
    	  }
    	void nhapday_dg();
    	void hienday_dg();
    	float chuvimax();
    	void hienmax();
    	void chuvi();
    	void doctep_hien();
    	void ghitep();
     };
    
    
    //---------------XAY DUNG LOP DIEM----------------------------------------//
     void Diem::nhapdiem()
     {
    	cout<<"\nNhap vao toa do diem:\n";
    	cout<<"x= "; cin>>this->x ;   //+++x,y
    	cout<<"y= "; cin>>this->y ;
     }
    //------------------------------------------------------------------------//
     void Diem::hiendiem()
     {
    	cout<<"\nx= "<<setw(2)<<x<<"\ny= "<<setw(2)<<y;
     }
    //------------------------------------------------------------------------//
     float Diem::khoang_cach(Diem d1)
     {
    	return sqrt(pow(this->x-d1.x,2)+pow(this->y-d1.y,2));//+++x-d1.x
     }
    //------------------------------------------------------------------------//
    
    
    //---------------XAY DUNG LOP DA GIAC-------------------------------------//
     void Dagiac::nhap_dg()
     {	
       do{
    	cout<<"\nNhap vao so diem: ";  cin>>n;
    	if(n>2)
    	{ 	d=new Diem[n+1];
    		for(int i=1;i<=n;i++)
    		{
    			cout<<"\nDiem thu"<<i<<":";
    			d[i].nhapdiem();
    		}
    		for(i=1;i<n;i++)
    			for(int j=i+1;j<=n;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<=n;i++)
    					{
    						cout<<"\nDiem thu"<<i<<":";
    						d[i].nhapdiem();
    					} //break;
    				      } //break;
    
    		// Them doan nay la ok
    
    		float a,b,c;
    		int ok=0;
    
    		for(i=1;i<n-1;i++)
    			for(int j=i+1;j<n;j++)         //*****************************************************************
    				for(int k=j+1;k<=n;k++)
    					{
    						a = sqrt(pow(d[i].x-d[j].x,2)+pow(d[i].y-d[j].y,2));
    						b = sqrt(pow(d[i].x-d[k].x,2)+pow(d[i].y-d[k].y,2));
    						c = 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 diem cua da giac.";
         }while(1);
     }
    //------------------------------------------------------------------------//
     void Dagiac::hien_dg()
     {
    	for(int i=1;i<=n;i++)
    	{
    		cout<<"\nDiem thu"<<i<<":";
    		d[i].hiendiem();
    	}
     }
    //------------------------------------------------------------------------//
    
     float Dagiac::chu_vi()
    
      {
    	float chuvi=0;
    	int dem=0;
    	float s=0;// tong do dai tu diem dau cho toi diem cuoi
    	float s1;//do dai cua diem cuoi va diem dau
    	for(int i=1;i<n;i++)
    	{
    		for(int j=i+1;j<=n;j++)
    		if(d[i].x==d[j].x&&d[i].y==d[j].y)
    		{
    			dem++; break;
    		}
    	}
    
    	for( i=1;i<n;i++)
    	{
    		s+=d[i].khoang_cach(d[i+1]);
    	}
    	s1=d[n].khoang_cach(d[1]);
    	if(n-dem>=3&&s>s1)
    		for(i=1;i<n;i++)
    		{
    			chuvi+=d[i].khoang_cach(d[i+1]);
    			chuvi+=d[n].khoang_cach(d[1]);
    
    		}
    	else {
    		return 0;
    	     }
    	return chuvi;
    
     }
    //---------------XAY DUNG LOP DAY DA GIAC---------------------------------//
     void Day_dg::nhapday_dg()
     {
    	cout<<"\nNhap so luong da giac:"; cin>>N;
    	if(dg!=NULL) delete dg;
    	dg=new Dagiac[N+1];
    	for(int i=1;i<=N;i++)
    	{
    		cout<<"\nDa giac thu"<<i<<":";
    		dg[i].nhap_dg();
    	}
     }
    //------------------------------------------------------------------------//
     void Day_dg::hienday_dg()
     {
    	 for(int i=1;i<=N;i++)
    	    {  cout<<"\nDa giac thu "<<i<<":";
    	       dg[i].hien_dg();
    	     }
    }
    //------------------------------------------------------------------------//
     float Day_dg::chuvimax()
     {
    	float max=dg[1].chu_vi();
    	for(int i=1;i<=N;i++)
    		if(dg[i].chu_vi()>max)
    			{
    				max=dg[i].chu_vi();
    			}
    	return max;
     }
    //------------------------------------------------------------------------//
     void Day_dg::hienmax()
     {
    	for(int i=0;i<=N;i++)
    
    		if(chuvimax()==dg[i].chu_vi())
    		{
    			cout<<"\nDa giac co chu vi max la da giac thu "<<i<<":";
    			dg[i].hien_dg();
    		}
    
     }
    //------------------------------------------------------------------------//
     void Day_dg::ghitep()
    {	fstream f;
    	f.open("Day_dg.dat",ios::binary|ios::out|ios::ate);
    	if(f.bad())
    	{	cout<<"Loi mo tep de ghi du lieu!";
    		getch(); return;
    	}
    	f.write((char*)this,sizeof(*this));
    	f.close();
    }
    
    //------------------------------------------------------------------------//
     void Day_dg::doctep_hien()
    {
    	fstream f;
    	f.open("Day_dg.dat",ios::binary|ios::in);
    	if(f.bad())
    	{	cout<<"Loi mo tep de doc du lieu!";
    		getch(); return;
    	}
    	clrscr();
    	int i=0;
    	while(f.read((char*)this,sizeof(*this))!=NULL)
    	{	cout<<endl<<setw(5)<<++i;
    		hienday_dg();
    	}
    	f.close();
    }
    
    //------------------------------------------------------------------------//
    
     int menu()
     {	int chon;
    	clrscr();
    	gotoxy(30,4); cout<<"VU ANH DUNG---07B5";
    	gotoxy(30,6); cout<<"CHUC NANG CHUONG TRINH";
    	gotoxy(30,7); cout<<"1.NHAP DAY DA GIAC";
    	gotoxy(30,8); cout<<"2.HIEN DAY DA GIAC";
    	gotoxy(30,9); cout<<"3.CHU VI MAX";
    	gotoxy(30,10); cout<<"0.THOAT";
    	gotoxy(30,12); cout<<"-------------------------------";
    	gotoxy(30,13); cout<<"MOI CHON CHUC NANG:";
    	cin>>chon;
    	return chon;
     }
    
    //----------------------XAY DUNG HAM MAIN---------------------------------//
     void main()
     {
    	Day_dg p;
    	int chon=1;
    	while(chon)
    	{
    		chon=menu();
    		switch(chon)
    		{
    			case 1:
    			{   clrscr();
    				p.nhapday_dg();
    				p.ghitep();
    				getch();
    				break;
    			}
    			case 2:
    			{
    				p.hienday_dg();
    				getch();
    				break;
    			}
    			case 3:
    			{       if(p.chuvimax()!=0)
    			       {	p.hienmax();
    				cout<<"\nVoi chu vi :"<<setw(3)<<p.chuvimax();
    				}
    				else cout<<"\nCac diem tren khong tao thanh da giac.";
    				getch();
    				break;
    			}
    
    		}
    	}
    	
     }

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

  1. Sửa máy tính, cài đặt windows, phần mềm tại nhà nhanh nhất, rẻ nhất, hiệu quả nhất …
    Gửi bởi hopluccc trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 08-07-2013, 02:07 PM
  2. Trả lời: 12
    Bài viết cuối: 25-10-2012, 02:48 AM
  3. Bài tập C++ NHập mảng một chiều gồm n phần tử kết thúc nhập khi nhập một chữ cái
    Gửi bởi thienthanoze trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 15
    Bài viết cuối: 09-07-2012, 10:10 PM
  4. Bài tập C++ Viết phương trình nhập vào 1 chuỗi số.Hãy nhập vào 1 số.Đếm xem có bao nhiêu chữ số bạn vừa nhập
    Gửi bởi namtuocdn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 16-10-2011, 10:39 AM
  5. Bài tập C++ Nhập mảng 1 chiều, nếu phần tử nhập trùng nhau thì bắt nhập lại
    Gửi bởi danielh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 09-07-2011, 03:35 PM

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