PDA

View Full Version : Giúp em bt LTHĐT xây dựng lớp đồng hồ



khanhaki2306
14-04-2009, 22:57
Hi các anh!
E đc giao làm nt nhỏ về xây dựng lớp đồng hồ nhưng em ko bít làm trc mới làm 1 số bài đơn giản về mảng và tính toán dễ.Bác nào biết làm giúp em tham khảo.
yêu cầu bài tập là : Xây dựng lớp đồng hồ viết bằng C++
Thuộc tính : giờ,phút,giây
Phương thức:
+ Hàm tạo có đối
+ In giờ(dùng cuot) dạng :giờ:phút:giây
+ Phép toán ++,-- để tăng giảm 1 giây
+ Phép toán +,- để cộng với một số nguyên là số giây
Mong đc các pro chỉ giáo.Em xin chân thành cám ơn!

canhve
15-04-2009, 15:41
#include"iostream.h"
#include"conio.h"
class time
{
private:
int h,p,s;
public:
time()
{
}
time(int h,int p,int s)
{
this->h=h;
this->p=p;
this->s=s;
}
time(time&x)
{
this->h=x.h;
this->p=x.p;
this->s=x.s;
}
void nhap();
void in();
void tangns();
void giamns();
void thoat();
};
void time::nhap()
{
do
{
cout<<"\n\n Nhap so gio: ";
cin>>h;
}
while(h<-1||h>23);
do
{
cout<<"\n Nhap so phut: ";
cin>>p;
}
while(p<0||p>59);
do
{
cout<<"\n Nhap so giay: ";
cin>>s;
}
while(s<0||s>59);
}
void time::tangns()
{
long n,i,j,m,k,i1,j1,m1,h1;
cout<<"\n\n Tang len bao nhieu giay: ";
cin>>n;
k=h*3600+p*60+s+n;
if(k<24*3600)
{
i=k/3600;
j=(k-3600*i)/60;
m=k-(3600*i+j*60);
cout<<i<<":"<<j<<":"<<m;
}
if(k>=24*3600)
{
h1=k-24*3600;
i1=h1/3600;
j1=(h1-3600*i1)/60;
m1=h1-(3600*i1+j1*60);
cout<<i1<<":"<<j1<<":"<<m1;
}
}
void time::giamns()
{
long n,i,j,m,k,i1,j1,h1,m1;
cout<<"\n Ban giam bao nhieu giay: ";
cin>>n;

k=h*3600+p*60+s-n;
if(k>=0)
{
i=k/3600;
j=(k-3600*i)/60;
m=k-(3600*i+j*60);
cout<<"\n "<<i<<":"<<j<<":"<<m;
}
if(k<0)
{

h1=24*3600+k;
i1=h1/3600;
j1=(h1-3600*i1)/60;
m1=k-(3600*i1+j1*60);
cout<<"\n "<<i1<<":"<<j1<<":"<<m1;
}
}
void main()
{
clrscr();
time h;
h.nhap();
h.tangns();
h.giamns();
getch();
//h.in();
}
moi nguoi xem co loi nao ko?

khanhaki2306
17-04-2009, 14:48
Hix em thử rùi vẫn bị lỗi vd nếu nhập với giờ 5h23'34s chẳng hạn thì vẫn ok nhưng nhập với 21h34'45'' bị lỗi ra kq sai.