GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Exercício URI 1021 , Contar cédulas e moedas. Por que não está contando as moedas ?

programação
Tags: #<Tag:0x00007f18609d68e8>

#1

uri_cÉdulas_e_moedas.txt (887 Bytes)


#2

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:

image

espero q ajude! :smiley:


#3

A resposta não é essa amigo


#4

Você só quer saber pq não estava contando as moedas ou a saída do código tinha que ser diferente?


#5

Boa tarde, a saida do codigo tem que ser diferente


#6

Diferente de que forma? Pq a contagem está correta.


#7

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.


#8

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.


#9

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;

}