| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
GotJosh
Registrado: 02 Feb 2007 Mensajes: 6
| Publicado: 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 ?  |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 3676 Ubicación: Mexico
| Publicado: 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
| Publicado: 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 | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |