wwwazxwww
14-04-2009, 20:31
Tớ có 1 bài toán về lớp đa giác như thế này:Xây dựng lớp đa giác rồi sau đó giải quyết vấn đề là cho n đa giác với mỗi đa giác có n điểm.Tìm đa giác có chu vi lớn nhất.Với dữ liệu đọc từ bàn phím vào thì tớ làm đuọc rồi.nhưng giờ thầy bắt ghi tọa độ điểm,số đỉnh,số đa giác ra tệp txt thì tớ chưa làm được.Đây la code của tớ và các bạn xem hộ tớ.Và các bạn xem hộ tớ xem code tớ trình bày thế đã hợp lý chưa.Thanks
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:
float x;
float 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 nhapd()
{
}
void xuatd()
{
cout<<"\ntoa do x,y: ";
cout<<"x= "<<x<<" "<<"y= "<<y;
}
float getx()
{
return x;
}
float gety()
{
return y;
}
};
class Da_giac
{
protected:
int n;
Diem d[20];
public:
Da_giac():Diem()
{
n=0;
}
Da_giac(int n1)
{
n=n1;
}
void nhapdg();
void hiendg();
float chuvi();
int getn()
{
return n;
}
};
class Day_DG:public Da_giac
{
private:
int m;
Da_giac *dg;
//Diem d[20];
public:
Day_DG()
{
m=0;
this->dg=NULL;
}
Day_DG(int x1,int y1,int n1,int N1)
{
m=N1;
dg=new Da_giac[m+1];
}
void nhapday_dg();
void hienday_dg();
float chuvimax();
void hienmax();
void ghitep(char *ttep);
};
void Da_giac::nhapdg()
{
do
{
cout<<"\nNhap vao so diem: ";
cin>>n;
if(n>2)
{
for(int i=1;i<=n;i++)
{
cout<<"\nDiem thu"<<i<<":";
cout<<"\nx= ";
cin>>d[i]x;
cout<<"\ny= ";
cin>>y;
}
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].nhapd();
}
}
float a,b,c;
int kt=0;
for(i=1;i<n-1;i++)
for(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))
{
kt= 1;
}
}
else
{
if(c==(a+b))
{
kt = 1;
}
}
}
else
{
if(b>c)
{
if(b==(a+c))
{
kt = 1;
}
}
else
{
if(c==(a+b))
{
kt = 1;
}
}
}
}
if(kt==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 Da_giac::hiendg()
{
for(int i=1;i<=n;i++)
{
d[i].xuatd();
cout<< d[i].getx();
}
}
float Da_giac::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;
} f
void Day_DG::nhapday_dg()
{
cout<<"\Nhap vao so luong cua da giac";
cin>>m;
for(int i=0;i<m;i++)
{
cout<<"Da giac thu "<<i+1;
dg[i].nhapdg();
}
}
void Day_DG::hienday_dg()
{
for(int i=0;i<m;i++)
{
cout<<"\nDa giac thu"<<i+1;
dg[i].hiendg();
cout<<" " << dg[i].chuvi();
}
}
float Day_DG::chuvimax()
{
float max=dg[0].chuvi();
for(int i=0;i<m;i++)
if(dg[i].chuvi()>max)
{
max=dg[i].chuvi();
}
return max;
}
void Day_DG::hienmax()
{
for(int i=0;i<m;i++)
if(chuvimax()==dg[i].chuvi())
{
cout<<"\nDa giac co chu vi max la da giac thu "<<i+1<<":";
dg[i].hiendg();
}
}
/*void Day_DG::ghitep(char *ttep)
{
ofstream f;
f.open(ttep,ios::out);
if(f.bad())
{
cout<<"\nTep"<<ttep<<" da ton tai";
cout<<"\nCo ghi de? - C/K";
int ch=getch();
if(toupper(ch)=='C')
{
f.close();
f.open(ttep);
}
else
exit(1);
}
f<<m<<endl;
for(int i=0;i<m;i++)
for(int j=0;j<dg[i].getn();j++)
{
cout<<"\nda la j"<<j;
f<<dg[i].getn()<<endl;
d[j].xuatd();
}
}*/
Hàm ghi tệp chưa được
void main()
{ textmode(C80);
clrscr();
Day_DG a;
Da_giac k;
a.nhapday_dg();
a.hienday_dg();
a.hienmax();
cout<<"\nVoi chu lon nhat la: "<<a.chuvimax();
cout<<"\nKet qua da luu vao tep Da_giac";
a.ghitep("AZX.txt");
getch();
}
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:
float x;
float 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 nhapd()
{
}
void xuatd()
{
cout<<"\ntoa do x,y: ";
cout<<"x= "<<x<<" "<<"y= "<<y;
}
float getx()
{
return x;
}
float gety()
{
return y;
}
};
class Da_giac
{
protected:
int n;
Diem d[20];
public:
Da_giac():Diem()
{
n=0;
}
Da_giac(int n1)
{
n=n1;
}
void nhapdg();
void hiendg();
float chuvi();
int getn()
{
return n;
}
};
class Day_DG:public Da_giac
{
private:
int m;
Da_giac *dg;
//Diem d[20];
public:
Day_DG()
{
m=0;
this->dg=NULL;
}
Day_DG(int x1,int y1,int n1,int N1)
{
m=N1;
dg=new Da_giac[m+1];
}
void nhapday_dg();
void hienday_dg();
float chuvimax();
void hienmax();
void ghitep(char *ttep);
};
void Da_giac::nhapdg()
{
do
{
cout<<"\nNhap vao so diem: ";
cin>>n;
if(n>2)
{
for(int i=1;i<=n;i++)
{
cout<<"\nDiem thu"<<i<<":";
cout<<"\nx= ";
cin>>d[i]x;
cout<<"\ny= ";
cin>>y;
}
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].nhapd();
}
}
float a,b,c;
int kt=0;
for(i=1;i<n-1;i++)
for(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))
{
kt= 1;
}
}
else
{
if(c==(a+b))
{
kt = 1;
}
}
}
else
{
if(b>c)
{
if(b==(a+c))
{
kt = 1;
}
}
else
{
if(c==(a+b))
{
kt = 1;
}
}
}
}
if(kt==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 Da_giac::hiendg()
{
for(int i=1;i<=n;i++)
{
d[i].xuatd();
cout<< d[i].getx();
}
}
float Da_giac::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;
} f
void Day_DG::nhapday_dg()
{
cout<<"\Nhap vao so luong cua da giac";
cin>>m;
for(int i=0;i<m;i++)
{
cout<<"Da giac thu "<<i+1;
dg[i].nhapdg();
}
}
void Day_DG::hienday_dg()
{
for(int i=0;i<m;i++)
{
cout<<"\nDa giac thu"<<i+1;
dg[i].hiendg();
cout<<" " << dg[i].chuvi();
}
}
float Day_DG::chuvimax()
{
float max=dg[0].chuvi();
for(int i=0;i<m;i++)
if(dg[i].chuvi()>max)
{
max=dg[i].chuvi();
}
return max;
}
void Day_DG::hienmax()
{
for(int i=0;i<m;i++)
if(chuvimax()==dg[i].chuvi())
{
cout<<"\nDa giac co chu vi max la da giac thu "<<i+1<<":";
dg[i].hiendg();
}
}
/*void Day_DG::ghitep(char *ttep)
{
ofstream f;
f.open(ttep,ios::out);
if(f.bad())
{
cout<<"\nTep"<<ttep<<" da ton tai";
cout<<"\nCo ghi de? - C/K";
int ch=getch();
if(toupper(ch)=='C')
{
f.close();
f.open(ttep);
}
else
exit(1);
}
f<<m<<endl;
for(int i=0;i<m;i++)
for(int j=0;j<dg[i].getn();j++)
{
cout<<"\nda la j"<<j;
f<<dg[i].getn()<<endl;
d[j].xuatd();
}
}*/
Hàm ghi tệp chưa được
void main()
{ textmode(C80);
clrscr();
Day_DG a;
Da_giac k;
a.nhapday_dg();
a.hienday_dg();
a.hienmax();
cout<<"\nVoi chu lon nhat la: "<<a.chuvimax();
cout<<"\nKet qua da luu vao tep Da_giac";
a.ghitep("AZX.txt");
getch();
}