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

ค้นหาเวลาที่ให้เข็มชั่วโมงกับเข็มนาทีทำมุมใน C++


สมมติว่าเรามีค่าทีต้าหรือค่ามุมหนึ่งค่า เราต้องหาครั้งเดียวในรูปแบบ hh:mm ที่สร้างมุมด้วยเข็มชั่วโมงและนาที สมมติว่ามุมคือ 90° ผลลัพธ์ที่ได้จะเป็น 3:00

เนื่องจากมีเวลา 12 ชั่วโมง ดังนั้นจึงมีความเป็นไปได้ 12 อย่างสำหรับชั่วโมงและ 60 อย่างสำหรับนาที เราจะวนซ้ำตลอดเวลาที่เป็นไปได้ หากมุมของเวลาใดๆ เท่ากับทีต้าที่กำหนด ให้พิมพ์เวลานั้น

ตัวอย่าง

#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