Si hay reglas en pseudocódigo no me las conozco muy bien, en cuanto a palabras me refiero, pero esto sería una aproximación:
(si puedes cópiala al notepad y dale tabulaciones, quedará más claro)
-----------------------------------------------
-----------------------------------------------
moneda(7)=(500,200,100,50,20,10,5,1)
leer cantidad
desde numero=0 hasta numero=7
......veces=parte entera de (cantidad entre moneda(numero))
......si veces>0 entonces
............imprime "devolver " veces " de " moneda(numero)
............cantidad=cantidad menos (moneda(numero) multiplicado por veces)
......fin si
siguiente numero
-----------------------------------------------
-----------------------------------------------
***********************************************
Te pongo una implementación en "C" que hice en un curso hace tiempo, no la he revisado, podría tener errores.
Yo la tengo perfectamente tabulada, pero creo que la web va a quitar los tab, pero bueno.
***********************************************
#include <stdio.h>
#include <stdlib.h>
void agregar(),actual(),vueltas();
int cambio;
int caja[8]={0,0,0,0,0,0,0,0};
int moneda[8]={10000,5000,1000,500,100,25,5,1};
void main()
{
int precio,pago,seguir=1;
while(seguir)
{
actual();
agregar();
printf("INTRODUCE EL PRECIO DE LA COMPRA\n");
scanf("%d",&precio);
printf("INTRODUCE EL PAGO DEL CLIENTE\n");
scanf("%d",&pago);
while(pago<precio)
{
printf("QUE SUELTE MAS DINERO\n");
scanf("%d",&pago);
}
cambio=pago-precio;
if(cambio==0)
{
printf("DEVOLUCION 0pts\n");
agregar();
}
else
{
printf("LA CANTIDAD DE %dpts SE LE DEVOLVERA AL CLIENTE ASI:\n\n",cambio);
vueltas();
agregar();
}
printf("\t1.-SEGUIR\n\t2.-SALIR\n");
scanf("%d",&seguir);
if (seguir!=1)
{
exit(0);
}
}
}
void agregar()
{
int unidades,entrada,seguir=0;
printf("\n¿DESEA AGREGAR DINERO?\n\t1.-SI DESEO AGREGAR\n\t2.-NO DESEO AGREGAR\n");
scanf("%d",&seguir);
while(seguir==1)
{
printf("¿QUE MONEDA DESEA AGREGAR: 10000, 5000, 1000, 500, 100 , 25, 5, 1?\n");
scanf("%d",&entrada);
if(entrada==10000 || 5000 || 1000 || 500 || 100 || 25 || 5 || 1)
{
printf("¿CUANTAS UNIDADES?\n");
scanf("%d",&unidades);
int a=0;
while(a<8)
{
if(moneda[a]==entrada)
{
caja[a]=caja[a]+unidades;
break;
}
else
{
a=a+1;
}
}
}
else
{
printf("¡MONEDA INCORRECTA!\n");
}
printf("¿DESEA AGREGAR MAS DINERO?\n\t1.-SI DESEO AGREGAR MAS\n\t2.-NO DESEO AGREGAR MAS\n");
scanf("%d",&seguir);
}
}
void actual()
{
int a=0;
while(a<8)
{
printf("DE %5d HAY %3d UNIDADES\n",moneda[a],caja[a]);
a=a+1;
}
}
void vueltas()
{
int a=0,b[8]={0,0,0,0,0,0,0,0};
while(a<8)
{
if(cambio>=moneda[a])
{
if(caja[a]==0)
{
printf(" NO HAY MAS UNIDADES DE %d\n",moneda[a]);
a=a+1;
}
else
{
cambio=cambio-moneda[a];
caja[a]=caja[a]-1;
b[a]=b[a]+1;
}
}
else
{
printf("\t\t%d\tDE %d\n",b[a],moneda[a]);
a=a+1;
}
}
if(cambio>0)
{
printf("LE DEBEMOS AL CLIENTE %dpts\n",cambio);
}
}
Saludos
Pablo