Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Tính hiệu hai thời điểm (Time Difference) trong C


Nhập giờ bắt đầu và giờ kết thúc (giờ, phút, giây), tính hiệu.

Thuật toán xử lý mượn

while (stop.sec > start.sec) { start.min--; start.sec += 60; }
diff.sec = start.sec - stop.sec;
while (stop.min > start.min) { start.hrs--; start.min += 60; }
diff.min = start.min - stop.min;
diff.hrs = start.hrs - stop.hrs;

Chương trình

#include <stdio.h>
struct Time { int hrs, min, sec; };
void diff(Time start, Time stop, Time *d) {
    while (stop.sec > start.sec) { start.min--; start.sec += 60; }
    d->sec = start.sec - stop.sec;
    while (stop.min > start.min) { start.hrs--; start.min += 60; }
    d->min = start.min - stop.min;
    d->hrs = start.hrs - stop.hrs;
}
int main() {
    Time start, stop, d;
    printf("Gio bat dau (h m s): "); scanf("%d%d%d", &start.hrs, &start.min, &start.sec);
    printf("Gio ket thuc (h m s): "); scanf("%d%d%d", &stop.hrs, &stop.min, &stop.sec);
    diff(start, stop, &d);
    printf("Hieu: %d:%d:%d - %d:%d:%d = %d:%d:%d\n",
           start.hrs, start.min, start.sec,
           stop.hrs, stop.min, stop.sec,
           d.hrs, d.min, d.sec);
    return 0;
}

Kết quả

Gio bat dau: 12 45 57
Gio ket thuc: 20 35 20
Hieu: 12:45:57 - 20:35:20 = -8:10:37

Lưu ý: Kết quả âm nếu giờ kết thúc sau giờ bắt đầu. Có thể lấy giá trị tuyệt đối hoặc xử lý qua ngày.