30/09/2018, 16:47

Cách viết code tạo ra đồng hồ điện tử?

#include<stdio.h>
#define DELAY 128000
struct my_time{
	int hours;
	int minutes;
	int seconds;

};
void display(struct my_time*t);
void update(struct my_time*t);
void delay(void);


main(){
	struct my_time systime;
	systime.hours = 0;
	systime.minutes = 0;
	systime.seconds = 0;
	for (;;){
		update(&systime);
		display(&systime);
	}
}
void update(struct my_time *t){
	t->seconds++;
	if (t->seconds == 60){
		t->seconds = 0;
		t->minutes++;
	}
	if (t->minutes == 60){
		t->minutes = 0;
		t->hours++;
	}
	if (t->hours == 24)
		t->hours = 0;
	delay();
}
	void dislay(struct my_time *t){
		printf("%02d:", t->hours);
		printf("%02d", t->minutes);
		printf("%02d
", t->seconds);
	}
	void delay(void){
		long int t;
		for (t = 1; t < DELAY; ++t);
	}
... viết 19:01 ngày 30/09/2018

Mục đích bạn tạo ra topic này là gì vậy?
Để share code, hay cần giúp cải tiến code, hay sửa lỗi?

Hoan Sò viết 18:59 ngày 30/09/2018

sửa lỗi bạn à mình đọc trong sách nên viêt ra mà chẳng chạy được nó báo không hỗ trợ hàm main()

... viết 19:02 ngày 30/09/2018

Bạn lỗi nhiều thứ quá, mình nói không hết được, nên post code mình sửa để bạn coi xem mình làm khác bạn ở chổ nào rồi tự rút kinh nghiệm.
Hàm delay() bạn thêm vào dòng Sleep(1000);
Mình build trên linux không có lệnh đó nên mình để trống hàm delay của bạn.

Ở một số compiler sau này, nó yêu cầu hàm main phải có kiểu trả về.
Bạn thay thành

int main()    {
        
        //code in here
        return 0;
}
#include <stdio.h>

#define DELAY 128000
struct my_time{
	int hours;
	int minutes;
	int seconds;

};

void delay(void){

}

void update(my_time& t){
	t.seconds++;
	if (t.seconds == 60){
		t.seconds = 0;
		t.minutes++;
	}
	if (t.minutes == 60){
		t.minutes = 0;
		t.hours++;
	}
	if (t.hours == 24)
		t.hours = 0;
	delay();
}

void display(my_time& t){
    printf("%02d:", t.hours);
    printf("%02d", t.minutes);
    printf("%02d\n", t.seconds);
}

main() {

	my_time systime;
	systime.hours = 0;
	systime.minutes = 0;
	systime.seconds = 0;
	for (;;){
		update(systime);
		display(systime);
	}
}
Hoan Sò viết 18:51 ngày 30/09/2018

đây là em đọc sách song viết ra Ngôn ngữ C ạ!

Hoan Sò viết 18:54 ngày 30/09/2018

code chạy hoài k à!!!

... viết 18:53 ngày 30/09/2018

Bạn chưa đọc hết phần mình post.

Hoan Sò viết 18:58 ngày 30/09/2018

Ngĩa là sao bạn thử giải thích rõ hơn được k

... viết 18:52 ngày 30/09/2018
Hàm delay() bạn thêm vào dòng Sleep(1000);
Mình build trên linux không có lệnh đó nên mình để trống hàm delay của bạn.

Còn việc thiết kế khung, in giờ ra tại 1 vị trí, xóa giờ và cập nhật giờ mới thì bạn tự thiết kế thôi.

Hoan Sò viết 18:54 ngày 30/09/2018

Sao Mình Đọc Trong Sách thì viết như trên thì nó hiện ra đồng hồ hệ thống luôn. Đây nó cứ chạy hoài bạn hướng dẫn mình cách cập nhập giờ k

Phú Nguyễn viết 18:51 ngày 30/09/2018

mình hiện cũng đang muốn viết chương trình này nè,topic này lâu rồi nên bạn có thể cho mình xin fb để mình tiện hỏi đc ko

Hoàng Đình Hợi viết 18:47 ngày 30/09/2018

các bạn thêm dòng code này vào trong hàm display() ở dòng đầu tiên nhé:

system(“cls”); // đây là hàm xóa màn hình

  • Do các bạn để function update và display ở trong 1 vòng lặp vô hạn. Vì thế cứ mỗi khi hiển thị xong 1 mốc thời gian. Thì nó lại tiếp tục xuống dòng và chạy mãi.
  • Mấu chốt ở đây là trước khi xuống dòng tiếp theo để hiển thị, thì chúng ta phải xóa màn hình. Như vậy, nó sẽ không xuống dòng được nữa. Đúng không nào. Và nó lại tiếp tục hiện thị ở dòng đó.
  • Một điều nữa. Là nếu như để seconds chạy chậm đi, Thì các bạn để anh DELAY ở giá trị là 129000000 nhé.
  • Cuối cùng các bạn nhớ. #include thư viện stdlib.h để có thể sử dụng được hàm system nhé.
    Cảm ơn vì đã đọc cmt của mình. Chúc các bạn thành công !
Bài liên quan
0