Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: audiogalaxy. en 29 Marzo 2013, 07:32 am



Título: [C] Error en código de ejercicio
Publicado por: audiogalaxy. en 29 Marzo 2013, 07:32 am
Ando codificando este:

En un estacionamiento, se cobra de la siguiente manera: los primeros 10 minutos son gratis, los siguientes 30 minutos tiene un valor de $0.30 y la hora $0.60. diseñe un programa que reciba tanto minutos como horas y muestre lo que debe cancelar el cliente. Tomando en cuenta que si es Martes y Sábado se hace un descuento del 12.56% sobre el monto total.

Código
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5. int min,hora,pagarporhora,montobruto;
  6. float descuento,pagarpormin,montoapagar;
  7. char dia[7];
  8. printf ("Indique la cantidad de minutos: ");
  9.    scanf("%d",&min);
  10.    printf("Indique el numero de horas: ");
  11. scanf ("%d",&hora);
  12.    printf ("Indique el Dia: ");
  13.    scanf ("%d",&dia);
  14.  
  15. if (min<=10) {
  16. pagarpormin=0.0;
  17. }
  18.        else
  19.        if (min<=30) {
  20. pagarpormin=0.3;
  21.       }
  22.       else
  23. pagarpormin=0.6;
  24.     pagarporhora=hora*0.6;
  25. montobruto=pagarpormin+pagarporhora;
  26.     if ((dia=="sabado") || (dia=="martes")){
  27.     descuento=montobruto*12.56/100;
  28.        }
  29.        else
  30.        descuento=0;
  31.  
  32. montoapagar=montobruto-descuento;
  33.                printf("Su monto a pagar es:$ %f", montoapagar);
  34. }

El programa corre pero no devuelve los valores requeridos.
¿En qué ando fallando?


Título: Re: [C] Error en código de ejercicio
Publicado por: Almapa en 29 Marzo 2013, 10:42 am
A mi me estaba dando fallos para pasar pagarporhora y montobruto de int a float, pero bueno si a ti te va bien, mejor.

Yo habiendo definido estas dos variables como float también y poniéndole:

Código
  1. system("pause");  // Para que no desaparezca la pantalla rápidamente

Habiendo incluido la librería iostream, si que obtengo el resultado. Creo que no hay ningún fallo.


Título: Re: [C] Error en código de ejercicio
Publicado por: audiogalaxy. en 29 Marzo 2013, 15:30 pm
Al ponerle que estuve 1 hora con 30 minutos me cobra $ 0.900
Incluso si le pongo que fue sabado o lunes. Ahí tendría que haber diferencia.


Título: Re: [C] Error en código de ejercicio
Publicado por: pacoperico en 29 Marzo 2013, 15:52 pm
Citar
char dia[7];
Tienes declarado dia como un arreglo de caracteres, pero cuando luego haces:
Citar
scanf ("%d",&dia);
estas intentando guardar un valor de tipo decimal en ese arreglo de caracteres. Tendrias que usar el especificador %s, que es el fomato de tipo cadena, en el primer argumento del scanf():
Código
  1. scanf ("%s", &dia)
Ademas, el nombre de un arreglo es en realidad un puntero del primer elemento de un arreglo, por lo que no tiene mucho sentido que uses el operador direccion en el segundo argumento de ese scanf(), que deberia quedar finalmente asi:
Código
  1. scanf ("%s", dia)


Título: Re: [C] Error en código de ejercicio
Publicado por: audiogalaxy. en 29 Marzo 2013, 16:28 pm
A ti sí te obedece a los datos que pongas?

A mi no, es decir, ya sólo le falta obedecer cuando le digo que si es marte o sábado realice el descuento.


Título: Re: [C] Error en código de ejercicio
Publicado por: rir3760 en 29 Marzo 2013, 16:47 pm
Para comparar la cadena ingresada con las literales "sabado" y "martes" tienes que seguir el consejo que te dieron en tu otro tema: utilizar la función strcmp.

Un saludo


Título: Re: [C] Error en código de ejercicio
Publicado por: Almapa en 29 Marzo 2013, 17:11 pm
Efectivamente, con la siguiente línea si que obedece al día insertado

Código
  1. if (strcmp(dia,"sabado")==0||strcmp(dia,"martes")==0)descuento=montobruto*12.56/100;


Título: Re: [C] Error en código de ejercicio
Publicado por: audiogalaxy. en 29 Marzo 2013, 17:44 pm
Listo! \o/

Una duda:

¿Tiene que ver que, como me dices, al usar strcmp al inicio tenga que cambiar el
Código
  1. int main()
por
Código
  1. int main(int argc, char * argv[])
?

¿Ahí qué estás indicando?


Título: Re: [C] Error en código de ejercicio
Publicado por: amchacon en 29 Marzo 2013, 19:53 pm
Al ejecutar un programa, se le pueden proporcionar datos (muy util para transmitir datos entre programas).

Si no los vas a usar, puedes dejarlo en blanco.