Ryuushiro Posted March 18, 2012 at 09:53 PM Report #444525 Posted March 18, 2012 at 09:53 PM Oi, preciso resolver um exercicio pra faculdade, mas estou tendo alguns problemas: -Como converter as horas para minutos? Me falaram que fica mais facil pra resolver. -Como eu descubro o tempo entre o horario de entrada e saida, levando em conta que precisa ser convertido de volta para horas pra dar o resultado pedido. -Na parte da tabela que diz sobre os preços, tem o primeiro que só funciona com minutos (até meia hora). Como eu calculo só com os minutos, se o tempo total do carro é feito com as horas principalmente? Se alguem puder me ajudar a resolver esse exercicio, agradeço desde já o/ Aqui está o exercício bem como o professor passou: #include <iostream>#include <string> #include <iomanip> using namespace std; int main() { /*programa de controle de estacionamento O usuário informa a placa do carro (ibx3429), o horário de entrada(15 10) e o horário de saída(16 30). O programa calcula o valor a ser pago conforme a tabela: * até meia hora: 5 reais * uma hora: 8 reais * cada hora adicional: 1.5 reais * acima de oito horas: 15 reais * pernoite: 20 reais Deve ser impresso na tela: O valor a ser pago pelo carro placa LLLNNNN é de R$ NN,NN O horario de entrada deve ser informado no formato 24 horas: 7 30 - sete e meia da manhã, 12 20 - meio dia e vinte, 21 08 - nove e oito da noite O tempo de permanencia é arredondado da seguinte forma: até 29 minutos == hora anterior. Mais do que 30 minutos == hora cheia Exemplos: uma hora e vinte e cinco minutos de permanencia == uma hora uma hora e quarenta e cinco minutos de permanencia == duas horas */ string placa; int hora_entrada, minutos_entrada, hora_saida, minutos_saida, horas, minutos, tempo; double valor = 0.0; bool pernoite = false; cout << "Digite a placa do carro: "; cin >> placa; cout << "Digite a hora de entrada: " ; cin >> hora_entrada >> minutos_entrada; cout << "Digite a hora de saida: " ; cin >> hora_saida >> minutos_saida; /* Preencha a lacuna ... 🙂 */ system("pause"); return 0; }
Diutsu Posted March 19, 2012 at 12:42 AM Report #444558 Posted March 19, 2012 at 12:42 AM horas -> minutos: minutos = minutos + horas * 60 // 1 hora = 60 minutos ou: minutos += horas * 60 // 1 hora = 60 minutos para minutos -> horas: hora = minutos_total / 60 // isto se o tipo for int nos dois, o C++ faz divisão inteira minutos = minutos_total % 60 // resto da divisão inteira por 60 a 3ª parte é feita à custa de vários ifs, sendo que o caso "especial" de ser meia hora pode ser analisado antes da conversão de minutos para horas. O 2º caso especial de "pernoite" precisas de saber qual a definição de pernoitar (24h?) ("chegada" > "saida" (ou seja: entra num dia, sai no seguinte, mas é meio estupido, caso entres as 23:56 e saias as 00:12), este caso pergunta ao professor qual é a definição e mete mais um if. XX SINFO - Semana Informática
bsccara Posted March 19, 2012 at 01:10 AM Report #444559 Posted March 19, 2012 at 01:10 AM -Como converter as horas para minutos? Me falaram que fica mais facil pra resolver. ??? Uma hora tem sessenta minutos. Podes fazer hora_entrada * 60 + minutos_entrada e hora_saida * 60 + minutos_saida para teres os tempos em minutos. Subtraíndo o tempo de saída pelo de entrada tens o intervalo, que se fôr negativo significa que o carro pernoitou (imagina que entrou às 19h30 e saiu às 2h30 do dia seguinte -> 2*60+30 (150) - 19*60+30 (1170) = -1020). Quanto ao arredondamento do tempo de permanência podes fazer (com inteiros) ((tempo + 30) / 60) * 60, o que arredonda ao múltiplo de 60 mais próximo. Para calcular o preço : int intervalo; int preco = 0; if (intervalo < 0) preco = 20; else if (intervalo <= 30) preco = 5; else { intervalo = ((intervalo + 30) / 60) * 60; if (intervalo >= (8 * 60)) preco = 15; else preco = 8 + (1.5 * ((intervalo / 60) - 1)); }
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now