Tema: ejercicio
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/01/2013, 08:49
flony
 
Fecha de Ingreso: diciembre-2010
Ubicación: catamarca
Mensajes: 22
Antigüedad: 14 años, 1 mes
Puntos: 0
ejercicio

bueno acá un ejercicio de libro...y no se donde esta la falla
Cita:
un estacionamiento cobra una cuota mínima de $2,00 por estacionarse hasta tres horas. El estacionamiento cobra $0.5 adicionales por cada hora o fracción que se pase de tres horas. El cargo máximo para cualquier periodo dado de 24Hs.es de $10,00 Suponga que ningún auto se estaciona durante mas de 24hs. a la vez. Escriba un programa que calcule y muestre los cargos por estacionamiento para cada uno de tres clientes que estacionaron su auto . Debe introducir las horas de estacionamiento para cada cliente
acá mi código uso la logica de que entran y salen el mismo dia...o sea 00:00:00 hasta 24:00:00
Código:
#include <iostream>
using namespace std;
int diferencia;
 
int hora_segundo(int h, int m,int s)
{
	return (h*3600)+(m*60)+s;
}

void diferencia_hora()
{
	int h_e,h_s,m_e,m_s,s_e,s_s;
	int hora_ingreso, hora_egreso, diferencia;
	cout<<"ingrese la hora de entrada en formato 24hs."<<endl;
	cout<<"ejemplo 15:30:25 un dato a la vez"<<endl;
	cout<<"ingrese la hora de entrada"<<endl;
	cin>>h_e;
	cout<<"ingrese los minutos"<<endl;
	cin>>m_e;
	cout<<"ingrese los segundos"<<endl;
	cin>>s_e;
	hora_ingreso=hora_segundo(h_e, m_e, s_e);
	cout<<"ingrese la hora de salida en formato 24hs."<<endl;
	cout<<"ejemplo 20:35:42 un dato a la vez"<<endl;
	cout<<"ingrese la hora de entrada"<<endl;
	cin>>h_s;
	cout<<"ingrese los minutos"<<endl;
	cin>>m_s;
	cout<<"ingrese los segundos"<<endl;
	cin>>s_s;
	hora_egreso=hora_segundo(h_s, m_s,s_s);
	diferencia=hora_egreso-hora_ingreso;
	
}

void horas()
{
	int sec, hr, min;
	sec=diferencia;
    hr = sec / (60*60);
    sec %= 60*60;
    min = sec / 60;
    sec %= 60;
    cout << hr << " hora";
    if(hr != 1) cout << "s";
    cout << ":" << min << " minuto";
    if(min != 1) cout << "s";
    cout << ":" << sec << " segundo";
    if(sec != 1) cout << "s";
}

int calcularCargo()
{
	int dif, rdo, rdo1;
	dif=diferencia;
	if (dif<=10800)
	{
		rdo=2;
	}
	else
	{
		if ((dif<10800)&&(dif>=86400))
		{
			rdo=(dif-10800)/3600;
			rdo1 %= 60*60;
			if (rdo1>=1)
			{
				rdo=rdo+1;
			}
			rdo=2+(rdo*0.5);
		}
		
	}
	return rdo;

}

int main()
{
	diferencia_hora();
	horas();
	calcularCargo();
	system("PAUSE");
	cin.get();
	return 0;
}
lo peor es que es un error logico, porque compila y todo