Enrere Mòdul 5
Fonaments de Programació. Llenguatge C/C++---
Pràctica    Resum teòric Exercicis
Pràctica d'ampliació

 
La devolució del canvi en EUROS

Com aplicació fàcil i directa dels vectors, veurem el clàssic problema del canvi en la seva versió més senzilla. 

 

Desenvolupament de la pràctica

Una màquina expenedora d'un producte determinat ha de tornar canvi quan la quantitat introduïda és superior al preu del producte. Aquesta màquina pot tornar monedes de:

1 cents d'EURO
5 cents d'EURO
10 cents d'EURO
20 cents d'EURO
50 cents d'EURO
1 EURO
2 EUROS

Les dades introduïdes per l'usuari seran: el preu del producte i la quantitat que s'ha introduït a la màquina. El programa haurà de calcular el canvi expressat en monedes de cada tipus. Aquest canvi s'haurà de calcular de forma que sempre ens doni el mínim de monedes possible. Això s'aconsegueix, en aquest cas, donant sempre la moneda de més valor que sigui més petit o igual al canvi. La implementació d'aquest algorisme es fa en el següent programa:

Definiu un projecte nou anomenat m5p09 i afegiu-li un arxiu de font C/C++ anomenat m5p09.cpp. Escriviu el següent codi:

//m5p09.cpp. El canvi

#include <stdio.h>
#include <stdlib.h>

void main(){

    float valor[7]={0.01,0.05,0.10,0.20,0.50,1,2};
    int n[7]={0};
    float canvi, preu, quant;
    int i;

    printf("\nIntroduïu el preu...");scanf("%f",&preu);
    printf("\nIntroduïu la quantitat...");scanf("%f",&quant);
    canvi=quant-preu;
    if(canvi<0){
       printf("\nquantitat insuficient");
       exit(1);
    }

    i=7;
    while((canvi>0)&&(i>=0)){
        if(canvi>=valor[i]){
            n[i]++;
            canvi=canvi-valor[i];
        }else i--;
    }
    for(i=0;i<7;i++){
        printf("%d monedes de %f EURO\n",n[i],valor[i]);
    }
}

Explicació del programa

Els valors de les monedes es posen en un vector unidimensional (en aquest cas de dimensió 8) anomenat valor. El nombre de monedes de cada tipus que es tornarà com a canvi està representat en el vector n[].  

Una vegada demanats els valors de preu i quant, es calcula el canvi que serà emmagatzemat a la variable canvi

L'assignació del nombre de monedes de cada tipus que formarà part del canvi es fa en el següent tros de codi:

 
 while((canvi>0)&&(i>=0)){
        if(canvi>=valor[i]){
            n[i]++;
            canvi=canvi-valor[i];
        }else i--;
 }

Una vegada calculat el canvi, mostra aquest canvi per pantalla.