Domingo de Manhã! Mais um problema do BEECROWD resolvido! Esse é outro problema de nível iniciante, vejam na sequência a resposta!
Plataforma: URI (BEECROWD)
Problema: 2003
Enunciado:
Domingo é dia de feira. Logo de manhã muitas pessoas se deslocam para o polo de lazer da Parangaba, onde acontece uma feira, conhecida por ser a maior da cidade. Na feira da Parangaba você pode encontrar de tudo.
Todos os domingos, Bino faz compras na feira. Ele sempre marca com seu amigo Cino de se encontrarem no terminal de ônibus da Parangaba às 8h, para irem juntos comprar na feira. Porém, muitas vezes Bino acorda muito tarde e se atrasa para o encontro com seu amigo.
Sabendo que Bino leva de 30 a 60 minutos para chegar ao terminal. Diga o atraso máximo de Bino.
Linguagens: C e C++
Solução:
Basta calcular as horas pegando 1 + o valor até o primeiro ":". Os minutos serão os valores que restarão até o próximo ":". Se horas for maior que 8, ou for 8 e os minutos forem maiores que zero, o cálculo do atraso é horas * 60 + minutos - 480. Se não forem é porque não houve atraso (então atraso = 0).
Código em C:
Em C, utilizei strtok e o token é ":", para separar os valores numéricos de horas e minutos. Além disso, como a entrada é texto, é necessário usar atoi para converter este valor obtido (tanto de horas quanto de minutos) para int.
#include <stdio.h> #include <string.h> int main() { char *hora = (char *) malloc(sizeof(char) * 5); int horas, minutos, atraso; while (scanf("%s ", hora) != EOF) { atraso = 0; horas = 1 + atoi(strtok(hora, ":")); minutos = atoi(strtok(NULL, ":")); if (horas > 8 || (horas == 8 && minutos > 0)) atraso = (horas) * 60 + minutos - 480; printf("Atraso maximo: %i\n", atraso); } return 0; }
#include <iostream> using namespace std; int main() { string hora; int horas, minutos, atraso; while (getline(cin, hora)) { atraso = 0; horas = 1 + (hora[0] - '0'); minutos = 10 * (hora[2] - '0') + hora[3] - '0'; if (horas > 8 || (horas == 8 && minutos > 0)) atraso = (horas) * 60 + minutos - 480; cout << "Atraso maximo: " << atraso << endl; } return 0; }