Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ++c en 27 Mayo 2014, 23:22 pm



Título: Empezando con funciones
Publicado por: ++c en 27 Mayo 2014, 23:22 pm
Hola, estaba creando un programa simple para ir asimilando el concepto de inicio de funciones, pero tengo una duda en como podría obtener el total de importe que no me cuadra con lo que se clasifica individualmente por automóvil.

No se si podría realizar el cálculo como lo hago en la función principal o intentarlo con la llamada de otra función para que me retorne el total...

Ahí va mi parte de código:

Código
  1. /* programa calculo importe parking */
  2. #include <stdio.h>
  3.  
  4.    float calcularImporte(float _horas);
  5.  
  6.    int main(void){
  7.  
  8.        float horas,total=0;
  9.        int contador;
  10.        printf("\n\tAutomovil \tHoras \t\tImporte:");
  11.        for( contador=1; contador <=3; contador++ ){
  12.            scanf("%f",&horas);
  13.            printf("\t");
  14.            printf("\t%d \t%f \t%f$",contador,horas,calcularImporte(horas));
  15.            horas+=horas;
  16.            total=total+calcularImporte(horas);
  17.        }
  18.        printf("\n \t\t\tTotal %f \tTotal %f",horas,total);
  19.        printf("\n");
  20.    }
  21.  
  22.    float calcularImporte( float _horas ){
  23.  
  24.        float importe;
  25.        if(_horas<=3){
  26.            importe=2.00;
  27.        }else if (_horas>3 && _horas <24){
  28.            importe=2.00+_horas*0.5;
  29.        }else
  30.            importe=10.00;
  31.        return(importe);
  32.    }
  33.  
  34.  

Saludos y gracias


Título: Re: Empezando con funciones
Publicado por: ivancea96 en 28 Mayo 2014, 00:11 am
Si estás 23 horas, te cuesta 13.50€, pero si estás 1 hora más, te cuesta 10€ xD

Al asunto:

Código
  1. horas+=horas;

Pusiste eso. Así estás duplicando las horas. Al total, le estás sumando horas de más. Quita esa linea, y debería ir bien.


Título: Re: Empezando con funciones
Publicado por: ++c en 28 Mayo 2014, 23:39 pm
Hola amigo gracias por la aportación, he revisado de nuevo el código y lo he terminado de desarrollar tal y como deseaba.

Adjunto el código terminado:

Código
  1. /* programa calculo importe parking */
  2. #include <stdio.h>
  3.  
  4.    float calcularImporte(float _horas);
  5.  
  6.    int main(void){
  7.  
  8.        float horas,total=0,total2=0;
  9.        int contador;
  10.        printf("\n\tAutomovil \tHoras \t\tImporte");
  11.        for( contador=1; contador <=3; contador++ ){
  12.         printf("\n:");
  13.            scanf("%f",&horas);
  14.            total=total+calcularImporte(horas);
  15.            total2+=horas;
  16.            printf("\t");
  17.            printf("\t%d \t%f \t%f$",contador,horas,calcularImporte(horas));
  18.        }
  19.        printf("\n \t\t\tTotal %.2f \tTotal %.2f",total2,total);
  20.        printf("\n");
  21.    }
  22.  
  23.    float calcularImporte( float _horas ){
  24.  
  25.        float importe;
  26.        if(_horas<=3){
  27.            importe=2.00;
  28.        }else if (_horas>3 && _horas <24){
  29.            importe=2.00+_horas*0.5;
  30.        }else
  31.            importe=10.00;
  32.        return(importe);
  33.    }
  34.  

Saludos