[SOLUCIONADO] Problema con ejercicio

Iniciado por flony, Enero 08, 2013, 11:52:37 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Enero 08, 2013, 11:52:37 AM Ultima modificación: Septiembre 18, 2014, 09:00:41 PM por Expermicid
bueno acá un ejercicio de libro...y no se donde esta la falla
Citar"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 You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login 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: cpp
#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

Me imagino que quieres realizar tu, propiamente el ejercicio, por lo tanto no te dare codigo, pero si algunos consejos:

1) Re-estructura las funciones: Ten en cuenta que las funciones cuando son creadas, deben poder ser utilizadas sin muchas modificaciones en otro codigo que crees, por lo tanto debes evitar a toda costa el uso de variables globales... Eso economiza tiempo a la hora de buscar y solucionar fallas.

2) Divide y Venceras: Ve resolviendo el problema paso por paso, cuenta la cantidad de horas en total, realiza el calculo de costo de cada hora y listo.

gracias, es verdad no quiero codigo quiero hacerlo yo  ;D, gracias por el aporte