• Viernes 8 de Noviembre de 2024, 20:55

Autor Tema:  [C] problema de desglose de monedas  (Leído 2516 veces)

chenteklim8

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
[C] problema de desglose de monedas
« en: Domingo 12 de Junio de 2011, 20:02 »
0
Hola, estoy intentando hacer un programa en C que funcione de esta forma:
1º pide al usuario que introduzca la cantidad que quiere pagar.
2º pide que introduzca el numero de monedas diferentes de que dispone(minimo una).
3º pide el valor de cada una de las anteriores monedas (una de ellas debe valer 1).
4º con los datos anteriores devuelve la cantidad a pagar desglosada en un numero minimo de monedas.

la parte que no consigo poner en código es aquella en la que tiene que buscar en la tabla de monedas.
se que tiene que coger la mas grande hasta que la cantidad que queda por pagar es menor, y entoces realiza lo mismo con la siguiente moneda(que será mas pequeña).

Estoy haciendo unas practicas de algorítmia, pero el profesor no tiene ninguna intención de ayudarme con esto.

Gracias y un saludo

chenteklim8

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: [C] problema de desglose de monedas
« Respuesta #1 en: Domingo 12 de Junio de 2011, 20:28 »
0
de  momento lo que tengo es esto, compila y ejecuta, pero hay algo en el bucle de "monedas()" que falla
 me pueden ayudar a resolverlo?
//Obtener un algoritmo para minimizar, dado un sistema monetario,
//el número de monedas necesarias para reunir una cantidad de
//forma que la solución sea satisfactoria en todos los casos.
//Se dispone de un número ilimitado de monedas de cada tipo.

Código: C
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. void monedas();
  4. int c, *m, nm;
  5.  
  6. main(){
  7.     int i;
  8.     printf("cual es la cantidad a pagar? ");
  9.     scanf ("%d", &c);
  10.     printf("de cuantas monedas se dispone? minimo 1 ");
  11.     scanf("%d",&nm);
  12.     m=(int*) malloc(nm*sizeof(int));
  13.     printf("introduce el valor de cada moneda de mayor a menor, debe haber una de valor 1n");
  14.     for(i=0;i<nm;i++){
  15.         printf("moneda %d: ",i+1);
  16.         scanf("%d",&*(m+i));
  17.     }
  18.     monedas();
  19. }
  20.  
  21. void monedas(){
  22.     int i,j,r,n;
  23.     r=c;
  24.         for(i=0;i<nm;i++){
  25.             n=0;
  26.             while(r-*(m+i)>=*(m+i)){
  27.                 r=r-*(m+i);
  28.                 n++;
  29.             }
  30.             printf("se utilizan %d monedas de %dn",n,*(m+i));
  31.         }
  32.    
  33. }
  34.