Jump to content

Exercicio envolvendo conversão de horario e outros


Ryuushiro
 Share

Recommended Posts

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;

}

Link to comment
Share on other sites

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

Link to comment
Share on other sites

-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));
}
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.