01/10/2018, 17:36
Tại sao code lại repeat?
Em vừa học lập trình , đang tập viết code cho bài "Nhập vào giờ phút giây ,cho biết thời gian sau 1s là ?
đây là code em viết:
#include<stdio.h>
void nhap(int &h,int &m,int &s);
int ktra(int h,int m,int &s);
int tinh(int &h,int &m,int &s,int kt); //nhap gio phut giay vao cho biet thoi gian sau 1s
void xuat(int kq ,int &h,int &m,int &s);
void main()
{
int h,m,s,kt,kq;
nhap(h,m,s);
ktra(h,m,s);
kt=ktra(h,m,s);
tinh(h,m,s,kt);
kq=tinh(h,m,s,kt);
xuat(kq,h,m,s);
}
void nhap(int &h,int &m,int &s)
{
printf("nhap gio vao:"); scanf("%d",&h);
printf("nhap phut vao:");scanf("%d",&m);
printf("nhap giay vao:");scanf("%d",&s);
}
int ktra(int h,int m,int &s)
{
if((h>=0)&&(m>=0)&&(s>=0)&&(h<24)&&(m<60)&&(s<60))
{
return 1;
}
else
{
return 0;
}
}
int tinh(int &h,int &m,int &s,int kt)
{
if(kt==1)
{
s=s+1;
if(s==60)
{
m=m+1;
s=0;
}
if(m==60)
{
h=h+1;
m=0;
}
if(h==24)
{
h=0;
}
return 1;
}
else
{
return 0;
}
}
void xuat(int kq ,int &h,int &m,int &s)
{
if(kq==0)
{
printf("ko hop le
");
}
if(kq==1)
{
printf(" %d gio %d phut %d giay
",h,m,s);
}
}
theo như ý tưởng thì nếu nhập 23:59:59 ----->0:0:0 nhưng kết quả lại là 0:0:1,kiểm tra thì em thấy nó repeat +1 hai lần , mọi người có thể giải thích vì sao không ạ? Em cảm ơn
Bài liên quan
@Quoc_Minh_Vu_Tran Cách post Code dùng Markdown trong Category Programming
Bạn có thể làm theo kiểu của máy tính:
Đổi hết thành số milliseconds tính từ 01/01/1970 00:00:00:000, tăng thêm 1000ms rồi tính lại thời gian =))
Toy problem vẽ ra làm gì bạn.
Bị thừa function call kìa, xóa bớt đi
Với lại đổi tên biến + space vài chỗ, cho nó dễ đọc.
Mình thấy timestamp là cách giải quyết đơn giản, chính xác mà. Với cả nó cũng không khó hiểu, đủ cho newbie áp dụng. Code lại ngắn và trong sáng.
Hi Quốc Minh Vũ Trần.
Hãy tìm hiểu các công cụ debug code. Đại khái nó sẽ cho bạn chạy từng lệnh một và xem trạng thái của chường trình.
Kì đầu không đi sâu vào thư viện đâu
Có gì đâu bác ơi? Trong bài của bạn này thì đơn vị lớn nhất là “giây”, mình chỉ cần làm đến “giây” là được: