Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ คำนวณความต่างของเวลา

รับช่วงเวลา 2 ช่วง (ชั่วโมง นาที วินาที) คำนวณหาความต่าง

ตัวอย่าง: 8:06:02 และ 3:09:03 → Diff = 4:56:59

โค้ดโปรแกรม

#include <iostream>
using namespace std;

int main() {
    int h1, m1, s1, h2, m2, s2;
    int diff_h, diff_m, diff_s;
    
    cout << "Enter time period 1 (h m s): ";
    cin >> h1 >> m1 >> s1;
    cout << "Enter time period 2 (h m s): ";
    cin >> h2 >> m2 >> s2;
    
    // Handle seconds borrow
    if (s2 > s1) {
        m1--;
        s1 += 60;
    }
    diff_s = s1 - s2;
    
    // Handle minutes borrow
    if (m2 > m1) {
        h1--;
        m1 += 60;
    }
    diff_m = m1 - m2;
    diff_h = h1 - h2;
    
    cout << "Time Difference is " << diff_h << ":" << diff_m << ":" << diff_s;
    return 0;
}

ผลลัพธ์ตัวอย่าง

Enter time period 1 (h m s): 7 6 2
Enter time period 2 (h m s): 5 4 3
Time Difference is 2:1:59

อัลกอริธึม

  1. อ่านเวลา 2 ช่วง
  2. ถ้าวินาทีช่วง 2 > ช่วง 1: ยืมนาที 1 (m1--, s1+=60)
  3. คำนวณ diff_s = s1 - s2
  4. ถ้านาทีช่วง 2 > ช่วง 1: ยืมชั่วโมง 1 (h1--, m1+=60)
  5. คำนวณ diff_m = m1 - m2, diff_h = h1 - h2

C++ Modern (Chrono)

#include <chrono>
#include <iostream>

using namespace std::chrono;

int main() {
    auto t1 = hours(7) + minutes(6) + seconds(2);
    auto t2 = hours(5) + minutes(4) + seconds(3);
    auto diff = t1 - t2;
    cout << duration_cast<hours>(diff).count() << ":"
         << duration_cast<minutes>(diff % hours(1)).count() << ":"
         << duration_cast<seconds>(diff % minutes(1)).count();
    return 0;
}