uri_cÉdulas_e_moedas.txt (887 Bytes)
Modifiquei um pouco o código pq não vi sentido em algumas partes, mas funcionou perfeitamente:
#include <stdio.h>
int main()
{
double n;
int n100, n50, n20 , n10, n5, n2;
int m1, m050, m025,m010, m001;
printf("Digite um valor maior que 0 > ");
scanf("%lf",&n);
n100 = (int) n/100;
n50 = (int) n/50;
n20 = (int) n/20;
n10 = (int) n/10;
n5 = (int) n/5;
n2 = (int) n/2;
m1 = (int) n/1;
m050 = (int) (n/0.5f);
printf("NOTAS:\n");
printf("%d nota(s) de R$ 100.00\n",n100);
printf("%d nota(s) de R$ 50.00\n",n50);
printf("%d nota(s) de R$ 20.00\n",n20);
printf("%d nota(s) de R$ 10.00\n",n10);
printf("%d nota(s) de R$ 5.00\n",n5);
printf("%d nota(s) de R$ 2.00\n",n2);
printf("MOEDAS:\n");
printf("%d moeda(s) de R$ 1.00\n",m1);
printf("%d moeda(s) de R$ 0.50\n",m050);
return 0;
}
Saída com o valor 100:
espero q ajude!
A resposta não é essa amigo
Você só quer saber pq não estava contando as moedas ou a saída do código tinha que ser diferente?
Boa tarde, a saida do codigo tem que ser diferente
Diferente de que forma? Pq a contagem está correta.
FutebolArts, o Villagram está sendo amigável ainda. Seja específico com o que vc precisa. Qual é a sua verdadeira dúvida e onde exatamente você está com problema.
Futebol_Arts_Variado,
Suas moedas de 50 não estão sendo contadas pois no trecho de código que você armazena o valor Double em uma variável Int você descartou a parte decimal.
double n;
int n100, n50, n20 , n10, n5, n2;
int m1, m050, m025,m010, m001;
int r100,r50,r20,r10,r5,r2,r1;
scanf("%lf",&n);
n100=(int) n/100;
r100=(int) n%100; //Momento em que você descarta a parte decimal
n50= r100/50;
r50=r100%50;
Sendo assim você deixou de operar com o valor original e agora está operando com apenas a parte inteira.
Fiz um esboço de solução aqui, se quiser pode se orientar por ela.
#include <stdio.h>
int main(){
float Valor;
int Resultado;
scanf("%f",&Valor);
// NOTAS DE 100
Resultado = (int)Valor/100;
printf("%d Notas de RS 100 \n", Resultado);
Valor = Valor - (Resultado*100);
// NOTAS DE 50
Resultado = (int)Valor/50;
printf("%d Notas de RS 50 \n", Resultado);
Valor = Valor - (Resultado*50);
// NOTAS DE 20
Resultado = (int)Valor/20;
printf("%d Notas de RS 20 \n", Resultado);
Valor = Valor - (Resultado*20);
// NOTAS DE 10
Resultado = (int)Valor/10;
printf("%d Notas de RS 10 \n", Resultado);
Valor = Valor - (Resultado*10);
// NOTAS DE 5
Resultado = (int)Valor/5;
printf("%d Notas de RS 5 \n", Resultado);
Valor = Valor - (Resultado*5);
// NOTAS DE 2
Resultado = (int)Valor/2;
printf("%d Notas de 2 \n \n", Resultado);
Valor = Valor - (Resultado*2);
// MOEDAS DE 1
Resultado = (int)Valor/1;
printf("%d Notas de R$ 1 \n", Resultado);
Valor = (Valor - (Resultado*1)) * 100; // PARTE DECIMAL
if(Valor>(int)Valor) //O C CONSIDERAVA PARTE FRACIONÁRIA MESMO QUANDO DEVERIA SER INTEIRA
Valor++; //CÓDIGO DE CORREÇÃO
// MOEDAS DE 50
Resultado = (int)Valor/50;
printf("%d Moedas de R$ 0,50 \n", Resultado);
Valor = Valor - (Resultado*50);
// MOEDAS DE 25
Resultado = (int)Valor/25;
printf("%d Moedas de R$ 0,25 \n", Resultado);
Valor = Valor - (Resultado*25);
// MOEDAS DE 10
Resultado = (int)Valor/10;
printf("%d Moedas de R$ 0,10 \n", Resultado);
Valor = Valor - (Resultado*10);
// MOEDAS DE 5
Resultado = (int)Valor/5;
printf("%d Moedas de R$ 0,05 \n", Resultado);
Valor = Valor - (Resultado*5);
// MOEDAS DE 1
Resultado = (int)Valor/1;
printf("%d Moedas de R$ 0,01 \n", Resultado);
Valor = Valor - (Resultado*1);
return 0;
}