para sacar las monedas que le debes devolver lo que tienes que hacer es ir descontando monedas de mayor a menor hasta que el importe sea 0
o sea,
while (devolver > 50)
{
devolver-=50;
MonedasDe50++;
}
while (devolver > 20)
{
devolver-=20;
MonedasDe20++;
}
while (devolver > 10)
{
devolver-=10;
MonedasDe10++;
}
etc
eso hara los cambios mas aproximados y reunidos, otra cosa seria si tuvieras que usar las monedas que te han dado en la maquina, entonces tendrias que ir descontando los tipos tambien y si no quedan monedas de ese tipo romper el while y pasar al siguiente.
while (devolver > 50)
{
if (Monedas[0]==0) break;
Monedas[0]--;
devolver-=50;
MonedasDe50++;
}
while (devolver > 20)
{
if (Monedas[1]==0) break;
Monedas[1]--;
devolver-=20;
MonedasDe20++;
}
while (devolver > 10)
{
if (Monedas[2]==0) break;
Monedas[2]--;
devolver-=10;
MonedasDe10++;
}
etc...