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

หาเวลาที่เข็มนาฬิกาสร้างมุมที่กำหนด (Theta) ใน C++

โจทย์

ให้มุม Theta (องศา) ต้องการหาเวลาแบบ hh:mm ที่เข็มนาทีและเข็มชั่วโมงสร้างมุมเท่ากับ Theta

ตัวอย่าง: Theta = 90° → เวลา 3:00

วิธีแก้ปัญหา (Brute Force)

ลูปทุกเวลาเป็นไปได้ (12 ชั่วโมง x 60 นาที = 720 กรณี):

  1. คำนวณมุมเข็มชั่วโมง: 0.5 * (hour*60 + minute)
  2. คำนวณมุมเข็มนาที: 6 * minute
  3. มุมระหว่างเข็ม = min(|hour_angle - minute_angle|, 360 - |...|)
  4. ถ้าเท่ากับ Theta → พิมพ์เวลาและจบ

ตัวอย่างโค้ด C++

#include <iostream>
#include <cmath>
using namespace std;

float angleFromClockHand(int hour, int minute) {
    float hour_angle = 0.5 * (hour * 60 + minute);
    float minute_angle = 6 * minute;
    float angle = abs(hour_angle - minute_angle);
    angle = min(360 - angle, angle);
    return angle;
}

void findTime(float theta) {
    for (int hour = 0; hour < 12; hour++) {
        for (int min = 0; min < 60; min++) {
            if (angleFromClockHand(hour, min) == theta) {
                cout << hour << ":" << min;
                return;
            }
        }
    }
    cout << "Unable to find time";
}

int main() {
    float angle = 45.0;
    findTime(angle);
}

ผลลัพธ์

4:30