Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

SetoKaioX

[Resolvido] Programa que sugere troco em C

Recommended Posts

Olá pessoal do Fórum iMaster. Primeira vez que posto alguma coisa no fórum pois já a alguns 3 meses comecei a estudar lógica e agora estou vendo C, pois quero muito realizar um sonho antigo que é trabalhar com dev de games mesmo começando agora com quase 25 (vai ser f*** mas quero tentar). Mas chega de apresentações.

 

Estou fazendo uns dos exercícios de lógica que vi numa apostila de visualg (bem conhecida por aqui);

" Escreva um algoritmo que calcule o número de notas e de moedas que deve ser dado de troco para

um pagamento efetuado. O algoritmo deve ler o valor a ser pago e o valor efetivamente pago. Supor que

o troco seja dado em notas de 50, 20, 10, 5, 2 e 1 real."

 

Fiz funções para verificar a quantidades de notas e moedas, não coloquei td pois ia ficar enorme. O problema esta na parte dos centavos (de 4 centavos a 1) que não esta calculando direito, não terminando programa (estou compilando no code:blocks mas tentei no devc++ e mesma coisa) caso use "if" ou dando troco errado (exemplo Compra: 1.99 Dinheiro: 2.00, Troco: 0.01, Quantidade de moedas de 1: "0".

 

#include <stdio.h>

float troco;

int NOTA50(void) //Função que calcula quantidade de notas de R$50. Existes funções pra notas de 20, 10,5,1, e moedas de 50, 25, 10, 5 e 1 (que estou com problemas)
{
   int count=0;
   while(troco>=50)
   {
       troco=troco-50;
       count++;
   }
   return(count);
}

...
"Parte das restantes das notas e moedas"
...

int MOEDA5(void)
{
   int count=0;
   while(troco>=0.05)
   {
       troco=troco-0.05;
       count++;
   }
   return(count);
}
int MOEDA1(void) //Estou com problemas nesta função, com "if(troco!=0.00)", programa trava na parte do cálculo dos centavos, mas com while, se troco
                // e por exemplo 2 centavos, ele informa que só dara 1 centavo de troco.
{
   int count=0;
   while(troco>=0.01)
   {
       troco=troco-0.01;
       count++;
   }
   return(count);
}
float DINHEIRO(void)
{
   float x, y;
   printf("\tCAIXA LIVRE\nValor total da compra:\nR$:");
   scanf("%f",&x);
   printf("\nValor em dinheiro recebido:\nR$:");
   scanf("%f",&y);
   while(x>y)
   {
       printf("\nValor em dinheiro não e suficiente.\nVeriquei/Informe cliente"
              " e entre com novo valor.\nR$:");
       scanf("%f",&y);
   }
   return(y-x);
}
int main(void)
{
   system("chcp 1252 > nul");
   printf("\n\n\tValor do troco: R$%0.2f\n\t-----------------------\n",troco=DINHEIRO());
   printf("\n\tTroco em notas de R$50: %d",NOTA50());
...
"Parte das restantes das notas e moedas"
...
   printf("\n\tTroco em moedas de R$0,05: %d",MOEDA5());
   printf("\n\tTroco em moedas de R$0,01: %d",MOEDA1());
   getchar();
   getchar();
   return(0);
}

Não sei se foi bem claro mas minha duvida é essa. Não quero código pronto, apenas uma sugestão de como resolver esse problema do 1 centavo. Também espero não ter quebrado regras do fórum. Obrigado a tds.

 

OK, acabei resolvendo e de certa forma estou envergonhado de não ter prestação atenção, na parte da moeda de um centavo mudei de while(troco>=0.01) para while(troco>=0.00) e funfo de boa. Agora vou dar uma olhada ou tentar reduzir o código ou partir pra outro exercício. Valeu pessoal.

int MOEDA1(void)
{
   int count=0;
   while(troco>=0.00)
   {
       troco=troco-0.01;
       count++;
   }
   return(count);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.