Trouver l'angle entre les aiguilles des heures et minutes dans une horloge analogique
M'a donné cette interview à la question récemment:
Donné 12 heures d'horloge analogique, calculer au degré le plus petit angle entre les aiguilles des heures et minutes. Soyez aussi précis que vous le pouvez.
Je me demande ce qui est le plus simple, plus lisible, plus précis algorithme est. Solution dans n'importe quelle langue est la bienvenue (mais expliquez-il un peu si vous pensez que c'est nécessaire).
- la plus simple? regarder sur wiki! : en.wikipedia.org/wiki/Clock_angle_problem'
- Je pense que c'est un problème purement mathématique, et aussi trivial. Je ne vois pas comment cette question peut devenir quatre-voix...
Vous devez vous connecter pour publier un commentaire.
Il s'avère que Wikipédia n'est la meilleure réponse:
En gros:
0.5
degrés par minute6
degrés par minuteLe problème est résolu.
Et la précision n'est pas un sujet de préoccupation parce que la partie fractionnaire est soit
.0
ou.5
, et dans la gamme de0..360
, toutes ces valeurs sont exactement représentable dansdouble
.Pour trouver l'angle entre les mains d'une horloge ,
Le code java qui polygenlubricants est similaire au mien. Supposons que l'horloge est de 12 heures au lieu de 24.
Si c'est 24 heures, puis c'est une autre histoire. Aussi, selon une autre hypothèse, supposons que si l'horloge est arrêtée alors que nous calculons cette.
Un seul cycle d'horloge est de 360 degrés.
Combien de degré peut l'aiguille des minutes par minutes? 360 /60 = 6 degrés par minute.
Combien de degré peut l'aiguille des heures par heure? 360/12 = 30 degrés par heure (depuis l'heure de main d'exécuter plus lentement que la minute)
Car il est plus facile de calculer à l'unité, "minute", let's get
30 /60 = 0,5 degré par minute.
Donc, si vous savez comment obtenir ces chiffres, le problème est assez bien fait avec de la solution.
Essayez ce code :
Minute d'angle (à partir de 12 heures): 360 * minutes /60
Angle horaire (à partir de 12 heures): 360 * (heure % 12) /12 + 360 * (minutes /60) * (1 /12)
Angle entre l'heure et les minutes: (heure de l'angle - minute d'angle) % 360
Par un simple calcul arithmétique, ce qui réduit de 30 * heures - 5.5 * minutes.
C'est une solution de (C#). C'est une solution très simple et ignore de précision. Espérons que la solution est auto-explicatif.
Je ne sais pas si c'est bon, .quelque chose comme ceci?
h=3
,m=0
, je reçois45
. Il devrait être90
.pour trouver l'angle entre l'aiguille des heures et l'aiguille des minutes est