/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Ayuda urgente por favor!!!

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
GotJosh



Registrado: 02 Feb 2007
Mensajes: 6

MensajePublicado: 14/10/2007 9:16 pm
Título: Ayuda urgente por favor!!!

Me han asignado la siguiente asignacion en la universidad y no logro dar con ella ( Me funciona para los siguientes valores solamente :

Valor del articulo : 0.21
Cantidad con la que se paga : 2.00

la asignacion es la siguiente :

Un vendedor ha solicitado un programa para saber como entregar "la devuelta" a los compradores, de manera que le entregue la menor cantidad de monedas posible. Por ejemplo si un comprador le entrega una moneda de RD 1.00$ para pagar un articulo de 21 centavos, el pgraoma debe informale que debe devolver:

1 modena de 50 centavos
1 modena de 25 centavos y 4 centavos

y esto es lo que tengo hasta ahora >< :

Cita:
#include <stdio.h>
#include <stdlib.h>

int devuelta ( float n, float m);

int main(int argc, char *argv[])
{ float a, b;
{ printf("Por favor introduzca el valor del articulo\n");
scanf("%f", &b);
}
{ printf("Por favor introuzca el total a pagar\n");
scanf("%f", &a);
}
{ if (a-b == 0)
printf("usted no necesita devuelta");
}
devuelta(a, b);

system("PAUSE");
return 0;
}


int devuelta ( float n, float m)
{ double a, d=1.00, e=0.50, f=0.25, i=0.01;
int b, z, x, y;


a = n - m; // = 1.79

b = a/d; // = 1.79 es k una modena 1 de un peso (van 1 peso)
printf("Usted necesita %d modenas de 1.00 peso\n", b);
a = a-d; // 1.79-1.00 = 0.79
z = a/e; // 1.58 es igual a una modea de 50 cent (van 1.50 peso)
printf("Usted necesita %d modenas de 0.50 peso\n", z);
a = a-e; // 0.79 - 0. 50 = 0.29
x = a/f; // 1.16 igual a 1 modena de 25 ( van 1.75)
printf("Usted necesita %d modenas de 0.25 peso\n", x);
a = a-f; // 0.04
y = a/i;
printf("Usted necesita %d modenas de 0.01 peso\n", y);
}


Alguien me ayuda por favor ? Sad
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3676
Ubicación: Mexico

MensajePublicado: 15/10/2007 7:31 am
Título:

Lo primero que habria que eliminar del programa son los bloques que tienes dentro de main junto con sus dos parametros (argc y argv) ya que no son necesarios, tambien ayudaria un poco nombres mas descriptivos como "total" y "valor" en lugar de "nombres" como "n" y "m" que no dicen absolutamente nada sobre las variables.

Esa funcion terminaria asi:
Código:
#include <stdio.h>
#include <stdlib.h>

int devuelta(float total, float valor);

int main(void)
{
   float total, valor;
   
   puts("Por favor introduzca el valor del articulo");
   scanf("%f", &valor);
   
   puts("Por favor introuzca el total a pagar");
   scanf("%f", &total);
   
   if (total - valor == 0)
      puts("Usted no necesita devuelta\n");
   
   devuelta(total, valor);
   system("PAUSE");
   
   return 0;
}

/* ... */


El problema en la funcion "devuelta" consiste en que solo restas al cambio el valor de una moneda de cada denominacion cuando deberias restarle el valor de la moneda por el numero de monedas dadas en cambio.

Revisa esa funcion pasando como total 2.0 y como costo 1.45 de forma que el cambio a dar sea .55 (dos monedas de .25 y cinco de .01) y te daras cuenta del error.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
GotJosh



Registrado: 02 Feb 2007
Mensajes: 6

MensajePublicado: 15/10/2007 7:41 am
Título:

Un millon de gracias creo que ahora si he dado con el pero tengo otro pequeño problemita! Ahora al parecer me da una modena menos de 1 centavo me pasba lo mismo antes y cambie los valores a double y se me arreglo pero el problema ha vuelto a surgir vuelvo a postear el codigo a ver:

Cita:

#include <stdio.h>
#include <stdlib.h>

int devuelta ( float n, float m);

int main(void)
{ float total, valor;
{ printf("Por favor introduzca el valor del articulo\n");
scanf("%f", &valor);
}
{ printf("Por favor introuzca el total a pagar\n");
scanf("%f", &total);
}
{ if (total-valor == 0)
puts("usted no necesita devuelta\n");
}
devuelta(total, valor);

system("PAUSE");
return 0;
}


int devuelta ( float n, float m)
{ double a, d=1.00, e=0.50, f=0.25, i=0.01;
int b, z, x, y;


a = n - m; // = 1.79

b = a/d; // = 1.79 es k una modena 1 de un peso (van 1 peso)
printf("Usted necesita %d modenas de 1.00 peso\n", b);
a = a-(d*b); // 1.79-1.00 = 0.79
z = a/e; // 1.58 es igual a una modea de 50 cent (van 1.50 peso)
printf("Usted necesita %d modenas de 0.50 peso\n", z);
a = a-(e*z); // 0.79 - 0. 50 = 0.29
x = a/f; // 1.16 igual a 1 modena de 25 ( van 1.75)
printf("Usted necesita %d modenas de 0.25 peso\n", x);
a = a-(f*x); // 0.04
y = a/i;
printf("Usted necesita %d modenas de 0.01 peso\n", y);
}
Volver arriba
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com