Không tìm được lỗi trong chương trình Đồng hồ điện tử?
Xin chào. Mình có làm 1 chương trình Đồng hồ điện tử. Và khi run thì nó sẽ bắt đầu chạy cho tới đủ 24 giờ thì sẽ stop.
Nhưng 1 lỗi ngớ ngẩn là khi chạy được 59 phút 59 giây thì qua được 1 giờ đúng không, nhưng chương trình vẫn không lên được 1 giờ
VD: 00:59:59 thì nó sẽ lại thành 00:00:00 trong khi mình muốn là 01:00:00
Không biết nó lỗi như thế nào? Các bạn Pro hướng dẫn giùm mình nhé: Mình cảm ơn
Code:
#include <stdio.h>// *Important: Variable " const "
#include <limits.h>
#include <float.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <string.h>
#include <ctype.h>
#include <Windows.h>
#include <time.h>
int main()
{
for (int gio = 0; gio <= 24; gio++)
{
if (gio <= 9)
printf("0%d:",gio);
else if (gio >= 10)
printf("%d:",gio);
for (int phut = 0; phut <= 59; phut++)
{
if (phut <= 9)
printf("0%d:",phut);
else if (phut >= 10)
printf("%d:",phut);
for (int giay = 0; giay <= 59; giay++)
{
if (giay <= 9)
printf("0%d",giay);
else if (giay >= 10)
printf("%d",giay);
Sleep(1);
system("cls");
if (phut <= 9)
printf("00:0%d:",phut);
else if (phut >= 10)
printf("00:%d:",phut);
}
system("cls");
}
}
getch();
return 0;
}
P/S: Do lập trình ra đồng hồ và kiểm tra xem nó hoạt động tốt chưa rất mất thời gian và đặc biệt là chương trình trên cần 1 tiếng đồng hồ để kiểm tra xong nên mình để Sleep(1)
để set time là 1/1000 giây để cho nó chạy nhanh
Sai ở đoạn
Cách đơn giản nhất để sửa là
Wow, hay đó man. Cảm ơn bạn nhiều nhé!
Mà bạn có thể giải thích cái lỗi cũng như đoạn code bạn fix không?
Cái đó đơn giản mà :3
Theo code của bạn thì cứ mỗi lần tăng một giây thì bạn sẽ xóa những thứ đã in lên màn hình để thay cái mới
> system(“cls”);
Cái sai của bạn là ở đoạn
printf("00:0%d:",phut);
vàprintf("00:%d:",phut);
như thế thì vô tình bạn đã để mặc định giờ bằng 0 vì bạn chỉ in phút ra.Ở đoạn code của mình sửa thì mình cũng chỉ copy lại từ đoạn code phía trên của bạn xuống thôi. Thực chất là để mỗi khi bạn gọi hàm
system("cls");
mình sẽ in lại đầy đủ giờ, phút, giây ra thôi :3P/s: sorry mình k giỏi giải thích lắm :3
Giải thích thế mình hiểu rồi Thanks nhiều nhé!
viết là
printf("%02d:%02d:%02d", h, m, s);
luôn, khỏi mất công if else < 10 hay >= 10.%d
là in số nguyên%2d
là in số nguyên tại vị trí có 2 chỗ trống. Nếu số nguyên chỉ có 1 ký tự thì số đó nằm ở bên phải%-2d
tương tự%2d
, nhưng số ưu tiên nằm về bên trái.%02d
tương tự%2d
, nhưng thay vì chỗ trống ko in ra ký tự nào thì bây giờ in số0
vào.Cảm ơn luôn nhé …