1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Programa em C

Discussão em 'Programação' iniciada por n0ob, 12 de Maio de 2012. (Respostas: 2; Visualizações: 909)

  1. Boas

    Preciso de ajuda neste programa...sff

    É suposto simular o troco de uma maquina de café, de modo a que sejam entregues o menor numero de moedas possivel...

    Ele funciona quando não tenho troco ;)

    /*MaQuina de café*/
    /*É de salientar que o troco para se minimizar o numero de moedas necessárias
    entregua-se sempre as de maior e depois as de menos val0r*/


    #include <stdlib.h>
    #include <stdio.h>
    main()
    {
    float valor_introduzido, valor_introduzido_simplificado, troco;
    int moeda200=0, moeda100=0, moeda50=0, moeda20=0, moeda10=0, moeda5=0;


    do
    {

    printf("Coloque um valor introduzido maior ou igual a 0.35 ;] ");
    scanf(" %f",&valor_introduzido);

    /*Para simplificar as contas, passamos tudo a centimos por exemplo 1,55 € = 155 centimos*/

    valor_introduzido_simplificado = valor_introduzido*100;

    } while (valor_introduzido_simplificado<35);



    troco = valor_introduzido_simplificado - 35;


    do{
    if(troco>=200)
    do

    {
    moeda200=moeda200+1;
    troco-200;

    } while (troco>=200);

    if(troco>=100)
    do
    {
    moeda100=moeda100+1;
    troco-100;

    } while (troco>=100);

    if(troco>=50)
    do
    {
    moeda50=moeda50+1;
    troco-50;

    } while (troco>=50);


    if(troco>=20)
    do
    {
    moeda20=moeda20+1;
    troco-20;
    } while (troco>=20);

    if(troco>=10)
    do
    {
    moeda10=moeda10+1;
    troco-10;
    } while (troco>=10);

    if(troco>=5)
    do
    {
    moeda5=moeda5+1;
    troco-5;
    } while (troco>=5);

    }while(troco!=0);

    printf("Moedas de 2€ entregues %d\n",moeda200);
    printf("Moedas de 1€ entregues %d\n",moeda100);
    printf("Moedas de 0.50 € entregues %d\n",moeda50);
    printf("Moedas de 0.20 € entregues %d\n",moeda20);
    printf("Moedas de 0.10 € entregues %d\n",moeda10);
    printf("Moedas de 0.05 € entregues %d\n",moeda5);




    system("pause");

    }


    Penso que o ultimo Do while era desnecessário...


    Cumps:cool:
     
  2. nfk

    nfk Power Member

    Seria muito mais simples dividires o troco pelo valor da moeda mais alta, para obteres o número dessas moedas, e depois dividires sucessivamente o resto da divisão pelo valor das moedas seguintes. Houve um tópico igual há relativamente pouco tempo, podes fazer uma pesquisa para tentar encontrá-lo.
     
  3. O que eu faria, era testar se o valor do troco que tinha que dar era superior ao valor da moeda mais alta, se não testava com o valor seguinte e ia decrementando o valor a devolver a medida que devolvia moedas de troco.

    Algo do genero:

    while(troco!=0){

    if(troco< moeda200){
    printf("Devolve uma moeda de 200");troco-=moeda200;
    }
    else
    ...As outras moedas


    }
     

Partilhar esta Página