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

Chương trình tìm góc giữa kim giờ và kim phút trong C++

Giới thiệu

Cho giờ (h) và phút (m), tìm góc nhỏ hơn giữa kim giờ và kim phút trên đồng hồ analog.

Công thức

  • Kim giờ: 0.5° mỗi phút → hour_angle = 0.5 * (60*h + m)
  • Kim phút: 6° mỗi phút → minute_angle = 6 * m
  • Chênh lệch: diff = |hour_angle - minute_angle|
  • Kết quả: min(diff, 360 - diff)

Ví dụ

h = 12, m = 45 → hour_angle = 0.5*(0+45) = 22.5°, minute_angle = 270° → diff = 247.5° → min = 112.5°

Ví dụ triển khai (C++)

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    double findAngle(int h, int m) {
        if (h == 12) h = 0;
        if (m == 60) m = 0;
        double hourAngle = 0.5 * (60 * h + m);
        double minuteAngle = 6 * m;
        double diff = abs(hourAngle - minuteAngle);
        return min(diff, 360 - diff);
    }
};

int main() {
    Solution ob;
    cout << fixed << setprecision(1) << ob.findAngle(12, 45); // 112.5
    return 0;
}

Đầu vào

12, 45

Đầu ra

112.5