[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 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta 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