Você está aqui: C ::: Desafios e Lista de Exercícios Resolvidos ::: Geometria, Trigonometria e Figuras Geométricas |
Como calcular o ângulo entre os ponteiros de horas e minutos em um relógio analógico - Exercícios Resolvidos de CQuantidade de visualizações: 696 vezes |
|
Pergunta/Tarefa: Este exercício é um desafio que aparece com muita frequência em entrevistas para programadores. Trata-se de uma tarefa na qual você deverá pedir para o usuário informar o valor das horas (no formato 12 ou 24 horas) e os minutos (de 0 a 59) e retornar o ângulo, em graus, do ponteiro das horas em relação ao ponteiro dos minutos. Este desafio é muito interessante, pois serve como base para a criação de um relógio analógico que se atualiza sozinho, a cada segundo decorrido. Em mais dicas do site nós mostramos como isso pode ser feito. Antes da resolução do exercício você deve se lembrar que haverá dois ângulos: o ângulo que vai do ponteiro de horas para o ponteiro dos minutos e o ângulo que vai do ponteiro dos minutos para o ponteiro das horas. O exercício pede apenas o primeiro. Sua saída deverá ser parecida com: Informe as horas: 9 Informe os minutos: 0 O ângulo entre os dois ponteiros é: 90 graus. Veja a resolução comentada deste exercício em C: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
// função principal do programa
int main(int argc, char *argv[]){
// variáveis usadas na resolução do problema
int horas, minutos, angulo;
setlocale(LC_ALL,""); // para acentos do português
// vamos pedir para o usuário informar as horas
printf("Informe as horas: ");
scanf("%d", &horas);
// vamos pedir para o usuário informar os minutos
printf("Informe os minutos: ");
scanf("%d", &minutos);
// vamos calcular o ângulo entre os ponteiros de horas
// e minutos no relógio analógico
angulo = calcularAngulo(horas, minutos);
// e mostramos o resultado
printf("O ângulo entre os dois ponteiros é: %d graus.",
angulo);
printf("\n\n");
system("PAUSE");
return 0;
}
// função que recebe as horas e minutos e retorna o
// ângulo entre os dois ponteiros do relógio analógico
int calcularAngulo(int horas, int minutos){
// variáveis locais
int ponteiro_horas, ponteiro_minutos, angulo;
// o primeiro passo é converter o formato 24 horas para
// 12 horas
horas = horas % 12;
// agora calculamos a posição do ponteiro das horas
ponteiro_horas = ((horas * 360) / 12) + ((minutos * 360) / (12 * 60));
// calculamos a posição do ponteiro dos minutos
ponteiro_minutos = (minutos * 360) / 60;
// então calculamos o ângulo entre os ponteiros
angulo = abs(ponteiro_horas - ponteiro_minutos);
// queremos o ângulo mais curto
if (angulo > 180) {
angulo = 360 - angulo;
}
// finalmente retornamos o ângulo calculado
return angulo;
}
|
|
|
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
|
VB.NET - Como calcular o coeficiente angular de uma reta em VB.NET dados dois pontos no plano cartesiano |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |







