Trường Cao Đẳng Bách Khoa Hưng Yên CĐ 5.2 - K3 - CNTT
Bài 1:Xây dựng lớp PHÂN SỐ gồm các phương thức nhập phân số,cộng trừ nhân
chia phân số.
Trên cơ sở lớp đã xây dựng viết chương trình thực hiện:
nhập 5 phân số q,p,z,u,v;
tính phân số s=(p-q*z)/(u+v)
Bài Làm
# include <iostream.h>
# include <conio.h>
# include <math.h>
class phanso
{
int tu,mau;
public:
void in();
void nhap();
friend phanso nhan(phanso p1,phanso p2);
friend phanso tru(phanso p1,phanso p2);
friend phanso cong(phanso p1,phanso p2);
friend phanso chia(phanso p1,phanso p2);
friend phanso rutgon(phanso p1);
friend int uscln(int x,int y);
};
int uscln(int x,int y)
{ int min;
x=abs(x);
y=abs(y);
if(x<y) min=x;
else min=y;
for(int i=min;i>=1;i--)
if(x%i==0&&y%i==0) break;
return i;
}
phanso rutgon(phanso p)
{ int a;
a=uscln(p.tu,p.mau);
p.tu=p.tu/a;
p.mau=p.mau/a;
return p;
}
void phanso::nhap()
{
cout<<"\n nhap tu phan so:";cin>>tu;
cout<<"\n nhap mau phan so:";cin>>mau;
}
void phanso::in()
{
- 1 -
Trường Cao Đẳng Bách Khoa Hưng Yên CĐ 5.2 - K3 - CNTT
cout<<tu<<"/"<<mau;
}
phanso nhan(phanso p1,phanso p2)
{
phanso p;
p.tu=p1.tu*p2.tu;
p.mau=p1.mau*p2.mau;
return rutgon(p);
}
phanso tru(phanso p1,phanso p2)
{ phanso p;
p.tu=p1.tu*p2.mau-p1.mau*p2.tu;
p.mau=p1.mau*p2.mau;
return rutgon(p);
}
phanso cong(phanso p1,phanso p2)
{
phanso p;
p.tu=p2.mau*p1.tu+p1.mau*p2.tu;
p.mau=p1.mau*p2.mau;
return rutgon(p);
}
phanso chia(phanso p1,phanso p2)
{ phanso p;
p.tu=p1.tu*p2.mau;
p.mau=p1.mau*p2.tu;
return p;
}
void main()
{clrscr();
phanso q,p,u,z,v,a,b,c,s;
cout<<"\n nhap phan so p:";
p.nhap();
cout<<"\n nhap phan so q:";
q.nhap();
cout<<"\n nhap phan so z:";
z.nhap();
cout<<"\n nhap phan so u:";
u.nhap();
cout<<"\n nhap phan so v:";
v.nhap();
a=cong(u,v);
cout<<"\n cong=";
a.in();
b=nhan(q,z);
cout<<"\n tich=";
- 2 -
Trường Cao Đẳng Bách Khoa Hưng Yên CĐ 5.2 - K3 - CNTT
b.in();
c=tru(p,b);
cout<<"\n tru=";
c.in();
s=chia(c,a);
cout<<"\n ket qua phan so s=";
s.in();
getch();
}
Bài 2: Xây dựng một lớp diểm gồm các thuộc tính :hoành độ x,tung độ y.các phương
thức gồm nhập, in toạ độ,độ dài hai điểm ;
Viết chương trình nhập toạ độ một dãy điểm ,sau đó tìm một cặp điểm xa nhất
Lời giải
# include <iostream.h>
# include <conio.h>
# include <iomanip.h>
# include <math.h>
class diem
{
private:
int x,y;
public:
void nhap();
void in();
double dodai(diem a);
};
void diem::nhap()
{
cout<<"\n nhap hoanh do:";cin>>x;
cout<<"\n nhap tung do:";cin>>y;
}
void diem::in()
{
cout<<"\n \t"<<x<<setw(5)<<y;
}
double diem::dodai(diem a)
{
return sqrt(pow(x-a.x,2)+pow(y-a.y,2));
}
void main()
{ clrscr();
int n;
diem *a=new diem[n+1];
cout<<"\n nhap vao so luong diem:";cin>>n;
for(int i=1;i<=n;i++)
{
- 3 -
Trường Cao Đẳng Bách Khoa Hưng Yên CĐ 5.2 - K3 - CNTT
cout<<"\n nhap vao toa do diem:"<<i;
a[i].nhap();
}
double max=a[1].dodai(a[2]);
int imax=1,jmax=2;
for(i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
if(a[i].dodai(a[j])>max)
{
max=a[i].dodai(a[j]);
imax=i;
jmax=j;
}
cout<<"\n cap diem xa nhau nhat la:";
cout<<"\n dinh thu:"<<imax;
a[imax].in();
cout<<"\n dinh thu :"<<jmax;
a[jmax].in();
cout<<"\n voi khoang cach la:"<<a[imax].dodai(a[jmax]);
getch();
}
Bài 3: Với lớp điểm đã xây dựng ở bài trước hãy xây dựng nhập dãy điểm sau đó tìm
tam giác có diện tích và chu vi lớn nhất có các đỉnh là các điểm vừa nhập
Trả lời
# include <iostream.h>
# include <conio.h>
# include <iomanip.h>
# include <math.h>
class diem
{
private:
int x,y;
public:
void nhap();
void in();
double dodai(diem d);
friend double dientich(diem d1,diem d2,diem d3);
friend double chuvi(diem d1,diem d2,diem d3);
};
void diem::nhap()
{
cout<<"\n nhap hoanh do:";cin>>x;
cout<<"\n nhap tung do:";cin>>y;
}
void diem::in()
{
- 4 -
Trường Cao Đẳng Bách Khoa Hưng Yên CĐ 5.2 - K3 - CNTT
cout<<"\n \t"<<x<<setw(5)<<y;
}
double diem::dodai(diem d)
{
return sqrt(pow(x-d.x,2)+pow(y-d.y,2));
}
double dientich(diem d1,diem d2,diem d3)
{
double a,b,c,p;
a=d1.dodai(d2);
b=d2.dodai(d3);
c=d3.dodai(d1);
p=(a+b+c)/2;
return sqrt(p*(p-a)*(p-b)*(p-c));
}
double chuvi(diem d1,diem d2,diem d3)
{
double a,b,c;
a=d1.dodai(d2);
b=d2.dodai(d3);
c=d3.dodai(d1);
return (a+b+c);
}
void main()
{ clrscr();
int n;
diem *d=new diem[n+1];
cout<<"\n nhap vao so luong diem:";cin>>n;
for(int i=1;i<=n;i++)
{
cout<<"\n nhap vao toa do diem:"<<i;
d[i].nhap();
}
double max=dientich(d[1],d[2],d[3]);
double max1=chuvi(d[1],d[2],d[3]);
int imax=1,jmax=2,kmax=3;
for (i=1;i<n-1;i++)
for (int j=i+1;j<n;j++)
for (int k=j+1;k<=n;k++)
if (dientich(d[i],d[j],d[k])>max&&chuvi(d[1],d[2],d[3])>max1)
{
max=dientich(d[1],d[2],d[3]);
max1=chuvi(d[1],d[2],d[3]);
imax=i;
jmax=j;
kmax=k;
- 5 -
Trường Cao Đẳng Bách Khoa Hưng Yên CĐ 5.2 - K3 - CNTT
}
cout<<"\n tam giac co chu vi va dien tich lon nhat la:";
cout<<"\n dinh thu:"<<imax;
d[imax].in();
cout<<"\n dinh thu :"<<jmax;
d[jmax].in();
cout<<"\n dinh thu :"<<kmax;
d[kmax].in();
cout<<"\n voi dien tich:"<<dientich(d[imax],d[jmax],d[kmax]);
cout<<"\n voi chu vi la:"<<chuvi(d[imax],d[jmax],d[kmax]);
getch();
}
Bài 4: Tạo lớp điểm gồm các thuộc tính :hoành độ x,tung độ y;các phương thức bao
gồm :nhập toạ độ ,in toạ độ .
viết chương trình cho phép nhập toạ độ hai điểm A,B thuộc lớp điểm
a: Tính giá trị hàm số F(x,y)=3x+12y tại A,B.
b: Tính độ dài 0A và 0B (với 0 là gốc toạ độ mặt phẳng 0xy)
Bài làm :
# include <iostream.h>
# include <conio.h>
# include <math.h>
# include <iomanip.h>
class diem{
int x,y;
public:
void nhap() {
cout<<"\n nhap hoanh do="; cin>>x;
cout<<"\n nhap tung do=";cin>>y;
}
void in() {
cout<<endl<<setw(10)<<x<<setw(10)<<y;
}
friend double f(diem d){
return (3*d.x+12*d.y);
} ;
friend double dodai(diem d){
return (sqrt(pow(d.x,2)+pow(d.y,2)));
} ;
} ;
void main(){
clrscr();
diem A,B;
A.nhap();
B.nhap();
- 6 -