Buongiorno a tutti, ho un problema con un sottoprogramma che deve, dato un valore del resto calcolato da un altro sottoprogramma, restituire banconote fino a che il resto non si azzera. Il resto deve essere dato in maniera ricorsiva e inoltre deve essere aggiornato un array contenente la disponibilità per ogni banconota utilizzata. Il mio problema è che non riesco proprio a scriverlo, quello che ho fatto è una schifezza e me ne rendo purtroppo conto.. avrei bisogno di questo programma il prima possibile, lo devo consegnare via mail entro domani pomeriggio. Grazie a tutti :
double RestoRicorsivo (int disp[], double resto, double tagli[]) {
int i;
double restoricorsivo;
if (resto == 0) {
restoricorsivo=0;
printf("Non sono necessarie ulteriori banconote per il resto");}
if (resto==tagli[0]) {
printf("Viene usata una banconota da 500");
disp[14]=disp[14]-1;
restoricorsivo=0;}
if (resto==tagli[1]) {
printf("Viene usata una banconota da 200");
disp[13]=disp[13]-1;
restoricorsivo=0;}
if (resto==tagli[2]){
printf("Viene usata una banconota da 100");
disp[12]=disp[12]-1;
restoricorsivo=0;}
if (resto==tagli[3]) {
printf("Viene usata una banconota da 50");
restoricorsivo=0;
disp[11]=disp[11]-1;}
if (resto==tagli[4]) {
printf("Viene usata una banconota da 20");
disp[10]=disp[10]-1;
restoricorsivo=0;}
if (resto==tagli[5]){
printf("Viene usata una banconota da 10");
disp[9]=disp[9]-1;
restoricorsivo=0;}
if (resto==tagli[6]) {
printf("Viene usata una banconota da 5");
restoricorsivo=0;
disp[8]=disp[8]-1;}
if (resto==tagli[7]) {
printf("Viene usata una banconota da 2");
disp[7]=disp[7]-1;
restoricorsivo=0;}
if (resto==tagli[8]) {
printf("Viene usata una banconota da 1");
restoricorsivo=0;
disp[6]=disp[6]-1;}
if (resto==tagli[9]) {
printf("Viene usata una banconota da 0.50");
restoricorsivo=0;
disp[5]=disp[5]-1;}
if (resto==tagli[10]) {
printf("Viene usata una banconota da 0.20");
restoricorsivo=0;
disp[4]=disp[4]-1;}
if (resto==tagli[11]) {
printf("Viene usata una banconota da 0.10");
restoricorsivo=0;
disp[3]=disp[3]-1;}
if (resto==tagli[12]) {
printf("Viene usata una banconota da 0.05");
disp[2]=disp[2]-1;
restoricorsivo=0;}
if (resto==tagli[13]){
printf("Viene usata una banconota da 0.02");
disp[1]=disp[1]-1;
restoricorsivo=0;}
if (resto==tagli[14]) {
printf("Viene usata una banconota da 0.01");
restoricorsivo=0;
disp[0]=disp[0]-1;}
else
for (i=0;i<15;i++) {
if(tagli[i]<=resto) {
if (disp[14-i]>0) {
printf("Viene usata 1 banconota da %.2lf\n\n",tagli[i]);
disp[14-i]=disp[14-i]-1;
resto=resto-tagli[i];
printf("Resto:%.2lf\n", resto);
restoricorsivo=resto;
restoricorsivo=RestoRicorsivo(disp, resto, tagli);}}
}
return(restoricorsivo);
}