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ố... matran a;vt b,c; a.nhapmt; cout.
Trang 1Bà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()
{
Trang 2}
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=";
Trang 3c=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++)
{
Trang 4cout<<"\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()
{
Trang 5cout<<"\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;
Trang 6cout<<"\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();
Trang 7A.in();
B.in();
float FA,FB,OA,OB;
FA=f(A);
FB=f(B);
OA=dodai(A);
OB=dodai(B);
cout<<"\n ham so tai A="<<FA;
cout<<"\n ham so tai B="<<FB;
cout<<"\n do dai OA="<<OA;
cout<<"\n do dai OB="<<OB;
getch();
}
Bài 5: Xây dựng 2 lớp VT (vecto),MT(ma trận)và 3 hàm bạn để hực hiện thao tác trên hai lớp này :
-hàm bạn với vecto dùng để in một vecto
-hàm bạn với lớp MT dùng để in một ma trận
viết chương trình nhập vào một ma trận vuông cấp n và một vecto cấp n,sau đó thực hiện phép nhân ma trận với vecto vừa nhập
Bài Làm:
# include <iostream.h>
# include <math.h>
# include <iomanip.h>
# include <conio.h>
class matran;
class vt;
class matran
{
int n,a[100][100];
public:
void nhapmt();
friend void inmt(matran a);
friend vt tich(matran a,vt b);
};
class vt
{
int n,b[100];
public:
void nhapvt();
friend void invt(vt b);
friend vt tich(matran a,vt b);
};
void matran::nhapmt()
{
cout<<"\n Nhap ma tran vuong:"; cin>>n;
for(int i=1;i<=n;i++)
Trang 8for(int j=1;j<=n;j++) {
cout<<"\n Nhap A["<<i<<","<<j<<"]=";
cin>>a[i][j];
} }
void inmt(matran a)
{
for(int i=1;i<=a.n;i++)
{cout<<"\n";
for(int j=1;j<=a.n;j++) cout<<setw(5)<<a.a[i][j];
}
}
void vt::nhapvt()
{
cout<<"\n nhap do dai vecto:"; cin>>n;
for(int i=1;i<=n;i++)
{
cout<<"\n Nhap B["<<i<<"]=";
cin>>b[i];
}
}
void invt(vt b)
{
for(int i=1;i<=b.n;i++)
cout<<setw(5)<<b.b[i];
}
vt tich(matran a,vt b)
{
int n=a.n;
vt c;
if(n!=b.n)
return b;
c.n=n;
for(int i=1;i<=n;i++)
{
c.b[i]=0;
for(int j=1;j<=n;j++)
c.b[i]+=a.a[i][j]*b.b[i];
}
return c;
}
void main()
{
clrscr();
Trang 9matran a;
vt b,c;
a.nhapmt();
cout<<"\n Ma tran vua nhap la:";
inmt(a);
b.nhapvt();
cout<<"\n Vecto vua nhap la:";
invt(b);
cout<<"\n Ket qua phep nhan ma tran va Vector la:";
c=tich(a,b);
invt(c);
getch();
}
Bài 6 :Tạo một lớp sinh viên có các phương thức và thuộc tính
Phương thức :nhập xuất tính DTB
Thuộc tính :họ tên ,điểm, địa chỉ
Tạo cơ sở dữ liệu lưu 20 sv thuộc lớp vừa tạo.
Tính SV có điểm trung bình cao nhất
In sinh viên theo thứ tự tăng dần của điểm trung bình
Bài Làm:
# include <iostream.h>
# include <conio.h>
# include <math.h>
# include <iomanip.h>
# include <stdio.h>
class sv
{
private:
char hoten[30];
float dt,dl,dh,dtb;
public:
void nhap();
void in();
float diemtb();
};
void sv::nhap()
{
cout<<"\n nhap vao ho ten:"; gets(hoten);
cout<<"\n Nhap diem 3 mon Toan,Ly,Hoa:"; cin>>dt>>dl>>dh; }
void sv::in()
{
cout<<"\n"<<hoten<<setw(10)<<"\n Diem TB:"<<dtb;
}
float sv::diemtb()
{
Trang 10return dtb;
}
void main()
{
clrscr();
int n;
sv ds[20];
cout<<"\n nhap vao so luong sv";cin>>n;
for(int i=1;i<=n;i++)
{
cout<<"\n nhap thong tin sinh vien thu:"<<i;
ds[i].nhap();
}
float max=ds[1].diemtb();
for(i=1;i<=n;i++)
if(ds[i].diemtb()>=max) max=ds[i].diemtb();
cout<<"\n sinh vien co diem trung binh cao nhat la:";
for(i=1;i<=n;i++)
if(ds[i].diemtb()==max) ds[i].in();
{for(i=1;i<n-1;i++)
for(int j=i+1;j<=n;j++)
if(ds[i].diemtb()>=ds[j].diemtb()) {
sv tg=ds[i];
ds[i]=ds[j];
ds[j]=tg;
} cout<<"\n danh sach sinh vien SX theo diem tb tang dan la:";
for(i=1;i<=n;i++)
ds[i].in(); } getch();
}
Bai 7 :Xây dựng lớp sinh viên để quản lý họ tên,năm sinh ,diểm thi 9 môn học của các sinh viên
Cho biết sinh viên nào được làm khoá luận tốt nghiệp, bao nhiêu sinh viên thi tốt nghiệp bao nhiêu sinh viên thi lại tiêu chuẩn xét như sau:sinh viên làm khoá luận phải có điểm trung bình từ 7 trở lên,trong đó không có môn nào dưới 5.
Sinh viên thi tốt nghiệp khi có DTB nhỏ hơn 7 ,điểm các môn không dưới dưới 5 Sinh viên thi lại môn dưới 5
Bài Làm:
# include <iostream.h>
# include <conio.h>
# include <math.h>
# include <iomanip.h>
Trang 11class sv
{
private:
char hoten[30],Ngaysinh[10];
float d1,d2,d3,d4,d5,d6,d7,d8,d9,dtb;
public:
void nhap();
void in();
int kt();
float diemtb();
};
void sv::nhap()
{
cout<<"\n Nhap vao ho ten:";gets(hoten);
cout<<"\n Nhap vao ngay sinh:"; gets(Ngaysinh);
cout<<"\n Nhap diem 9
mon:";cin>>d1>>d2>>d3>>d4>>d5>>d6>>d7>>d8>>d9;
}
void sv::in()
{
cout<<"\n Ho ten"<<hoten<<"\n Ngay sinh:"<<Ngaysinh<<"\n Diem TB:"<<dtb; }
int sv::kt()
{
if(d1>=5&&d2>=5&&d3>=5&&d4>=5&&d5>=5&&d6>=5&&d7>=5&&d8>=5&&d9>
=5)
return 1;
return 0;
}
float sv::diemtb()
{
dtb=(d1+d2+d3+d4+d5+d6+d7+d8+d9)/9;
return dtb;
}
void main()
{
clrscr();
int n;
sv *ds=new sv[n+1];
cout<<"\n Nhap vao so luong sv";cin>>n;
for(int i=1;i<=n;i++)
{
cout<<"\n Nhap thong tin sinh vien thu:"<<i;
ds[i].nhap();
Trang 12for( i=1;i<=n;i++)
{
if(ds[i].diemtb()>=7&&ds[i].kt()==1) { cout<<"\n Sinh vien duoc lam khoa luan tot nghiep la:";
ds[i].in();
} }
for(i=1;i<=n;i++)
{
if(ds[i].diemtb()>=5 &&ds[i].kt()==1) {
cout<<"\n sinh vien duoc thi tot nghiep la";
ds[i].in();
} }
for(i=1;i<=n;i++)
{
if(ds[i].kt()==0) {
cout<<"\n Sinh vien thi lai mon:";
ds[i].in();
} }
delete ds;
getch();
}
Bài 8: Tạo một lớp sinh viên dữ liệu về sinh viên bao gồm :họ tên ,mã số sinh viên (điểm cơ bản ,điểm cơ sở, điểm ngoại ngữ).
Viết chương trình thực hiện các chức năng sau.
a) Nhập dữ liệu cho 100 sinh viên với các thông số thông tin : họ tên, mã số sinh viên, điểm In ra tất cả các sinh viên, điểm trung bình Trong đó điểm trung bình bằng( co bản +cơ sở+ngoại ngữ)/3.
b) In ra tất cả các sinh viên loại giỏi, sinh viên được xếp loại giỏi nếu có điểm trung bình>=8 và các môn còn lại đều >=5.
c) Tìm sinh viên với mã số sinh viên được nhập từ bàn phìm
Bài Làm:
# include <conio.h>
# include <iostream.h>
# include <stdio.h>
# include <iomanip.h>
# include <string.h>
class SV {
char msv[10],ht[30];
float dcb,dcs,dnn,dtb;
public:
Trang 13void nhap();
void in();
float DTB();
friend void timkiem(char a[10]);
}sv[100];
void SV::nhap() {
cout<<"\n nhap ma sinh vien"; gets(msv);
cout<<"\n nhap ho ten"; gets(ht);
cout<<"\n nhap diem co so la";cin>>dcs;
cout<<"\n nhap diem co ban la";cin>>dcb;
cout<<"\n diem ngoai ngu la la";cin>>dnn;
}
void SV::in() {
cout<<endl<<setw(10)<<ht<<setw(10)<<msv<<setw(10)<<dcb<<setw(10)<<dcs<<setw (10)<<dnn<<setw(10)<<dtb;
}
float SV::DTB() {
return ((dcs+dcb+dnn)/3);
}
void timkiem(char a[10])
{
for(int i=1;i<=100;i++)
if(strcmp(a, sv[i].msv)==0)
sv[i].in();
}
void main()
{clrscr();
int n;
SV *dssv;
cout<<"\n luong sinh vien can nhap la:";cin>>n;
dssv=new SV[100+1];
for(int i=1;i<=n;i++)
dssv[i].nhap();
cout<<"\n danh sach sinh vien co diem trung binh >=5 la:";
for (i=1;i<=n;i++)
if(dssv[i].DTB()>=5)
dssv[i].in();
cout<<"\n danh sach sinh vien xep loai gioi la";
for(i=1;i<=n;i++)
if(dssv[i].DTB()>=8)
dssv[i].in();
char a[10];
Trang 14cout<<"\n"<<"\n danh muc tim kiem sinh vien";
cout<<"\n nhap ma sinh vien can tim";
cin>>gets(a);
timkiem(a);
getch();
}
Bài 9:
Cho biết lớp học có n học sinh ( n được nhập vào từ bàn phím) Hãy nhập điểm trung bình của mỗi học sinh, sau đó cho biết các thông tin sau:
a) Học sinh nào có điểm cao nhất lớp
b) Học sinh nào có điểm thấp nhất lớp
c) Nhà trường có 3 phần thưởng để trao cho 3 em có điểm cao nhấp lớp Hãy cho biết 3 em đó là 3 em nào.
d) Cho biết trong lớp có bao nhiêu em có điểm trên trung bình.
Bài Làm:
# include <iostream.h>
# include <conio.h>
# include <math.h>
# include <iomanip.h>
# include <stdio.h>
class hs
{
char hoten[30];
float dtb;
public:
void nhap();
void in();
friend void sapxep(int n);
}ds[100];
void hs::nhap()
{
cout<<"\n Nhap TT hoc sinh:"; gets(hoten);
cout<<"\n Nhap DTB:"; cin>>dtb;
}
void hs::in()
{
cout<<"\n Ho ten hoc sinh:"<<hoten;
cout<<"\n Diem TB la:"<<dtb;
}
void sapxep(int n)
{ for (int i=1;i<=n-1;i++)
for(int j=1;j<=n;j++)
if(ds[i].dtb>ds[j].dtb)
{ hs tg=ds[i];
ds[i]=ds[j];
ds[j]=tg;
Trang 15}
void main()
{
clrscr();
int i,j,n;
cout<<"\n Nhap so luong hoc sinh:";cin>>n;
for(i=1;i<=n;i++)
ds[i].nhap();
sapxep(n);
cout<<"\n ds hoc sinh duoc qua la:";
for(i=1;i<=3;i++)
ds[i].in() ;
getch();
}
Bài 10: Để quản lí điểm thi vào trường Cao Đẳng Bách Khoa của các thí sinh, hãy xây dựng lớp THISINH mô tả các thí sinh bao gồm các thuộc tính và các phương thức sau:
Tên thí sinh.
Nhập thông tin của thí sinh gồm tên và điểm 3 môn Toán, Lý , Hoá.
In thông tin của thí sinh gồm tên và điểm 3 môn
Tính tổng điểm thi của thi sinh, trên cơ sở lớp đã xây dựng được, viết chương trình làm các công việc sau:
- Nhập danh sách kết quả thi của các thí sinh vào từ bàn phím
- Đưa ra mà hình danh sách thí sinh trúng tuyển (điểm chuẩn vào trường 16)
Bài Làm:
# include <iostream.h>
# include <conio.h>
# include <iomanip.h>
# include <iostream.h>
# include <stdio.h>
class ts
{
private:
char hoten[30];
float dt,dl,dh;
public:
void nhap();
void in();
float tong();
int kt();
};
void ts::nhap()