igorbras5 0 Denunciar post Postado Novembro 26, 2009 Pessoal preciso de uma ajuda: preciso terminar esse algoritmo, está quase pronto mas não consigo. Se você atribuir 1 x 50, 5 x 20 e 0 x 10 e o valor de saque é 60 ... o meu algoritmo irá informar que usou apenas 1 nota de 50 ... e o correto é usar 3 x 20 já que não existe nota de 10, e restará 1 x 50, 2 x 20 e 0 x 10... O programa basicamente tem q ler o numero de notas que tem em caixa e ler o valor para saque, verificar se existem notas disponiveis e discontar os valores sacados caso ok...depois mostrar na tela quais notas usadas no saque e quantas notas ainda existem disponiveis. Abaixo segue o algoritmo: #include <stdio.h> #include <conio.h> int main(){ int Valor, x50, y20, z10, n50, n20, n10; Valor = 0; printf("Digite qtde de notas de 50:"); scanf("%d", &x50); printf("Digite qtde de notas de 20:"); scanf("%d", &y20); printf("Digite qtde de notas de 10:"); scanf("%d", &z10); printf("digite o valor do saque:"); if(((x50*50)+(y20*20)+(z10*10))>Valor) { while(scanf("%d",&Valor),((x50*50)+(y20*20)+(z10*10))>=Valor) { n50 = n20 = n10 = 0; while(Valor>=50 && x50>0) { x50 = x50 - 1; Valor = Valor - 50; n50 = n50 + 1; } while(Valor>=20 && y20>0) { y20 = y20 - 1; Valor = Valor - 20; n20 = n20 + 1; } while(Valor>=10 && z10>0) { z10 = z10 - 1; Valor = Valor - 10; n10 = n10 + 1; } printf("Notas de 50 usadas: %d\n", n50); printf("Notas de 20 usadas: %d\n", n20); printf("Notas de 10 usadas: %d\n", n10); printf("\nNotas Disponíveis: \n"); printf("notas de 50: %d\n", x50); printf("notas de 20: %d\n", y20); printf("notas de 10: %d\n", z10); } } if(((x50*50)+(y20*20)+(z10*10))<Valor){ printf("Saque indisponivel"); } getch(); } Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 26, 2009 VEja se isso resolve, ow se eu falhei em algum caso: #include <stdio.h> int testanotas(int nota1, int nota2, int nota3, int valor, int qtd1, int qtd2, int qtd3){ int retorno = 0; int qtd1_, qtd2_, qtd3_; qtd1_ = qtd2_ = qtd3_ = 0; if (valor >= nota1 && qtd1>0) { qtd1_ = valor / nota1; if(qtd1_<=qtd1) valor-= (qtd1_*nota1); } if (valor >= nota2 && qtd2>0) { qtd2_ = valor / nota2; if(qtd2_<=qtd2) valor-= (qtd2_*nota2); } if (valor >= nota3 && qtd3>0) { qtd3_ = valor / nota3; if(qtd3_<=qtd3) valor-= (qtd3_*nota3); } if (valor!=0) retorno = 1; else { printf("Notas de %d usadas: %d\n", nota1, qtd1_); printf("Notas de %d usadas: %d\n", nota2, qtd2_); printf("Notas de %d usadas: %d\n", nota3, qtd3_); printf("\nNotas Disponíveis: \n"); printf("notas de %d: %d\n", nota1, qtd1-qtd1_); printf("notas de %d: %d\n", nota2, qtd2-qtd2_); printf("notas de %d: %d\n", nota3, qtd3-qtd3_); } return retorno; } int main(){ int Valor, x50, y20, z10; Valor = 0; printf("Digite qtde de notas de 50:"); scanf("%d", &x50); printf("Digite qtde de notas de 20:"); scanf("%d", &y20); printf("Digite qtde de notas de 10:"); scanf("%d", &z10); printf("digite o valor do saque:"); scanf("%d", &Valor); if (!testanotas(50, 20, 10, Valor, x50, y20, z10)==0) if (!testanotas(20, 50, 10, Valor, y20, x50, z10)==0) if (!testanotas(10, 20, 50, Valor, z10, y20, x50)==0) printf("Saque indisponivel"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
igorbras5 0 Denunciar post Postado Novembro 26, 2009 E ai cara, valeu por responder... então, com o saque de 60 funcionou mas qnd colocamos 2 notas pra cada cédula ao sacar 150 fala saque indisponível =/ Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 26, 2009 tentei assim: #include <stdio.h> int testanotas(int nota1, int nota2, int nota3, int valor, int qtd1, int qtd2, int qtd3){ int retorno = 0; int qtd1_, qtd2_, qtd3_; int i1, i2, i3, iq1, iq2, iq3; i1 = i2 = i3 = iq1 = iq2 = iq3 = 0; qtd1_ = qtd2_ = qtd3_ = 0; if (valor >= nota1 && qtd1>0) { qtd1_ = valor / nota1; if(qtd1_<=qtd1) { valor-= (qtd1_*nota1); i1 = qtd1-qtd1_; iq1 = qtd1_; } else { valor -= (qtd1*nota1); i1 = 0; iq1 = qtd1; } } if (valor >= nota2 && qtd2>0) { qtd2_ = valor / nota2; if(qtd2_<=qtd2) { valor -=(qtd2_*nota2); i2 = qtd2-qtd2_; iq2 = qtd2_; } else { valor -=(qtd2*nota2); i2 = 0; iq2 = qtd2; } } if (valor >= nota3 && qtd3>0) { qtd3_ = valor / nota3; if(qtd3_<=qtd3) { valor-= (qtd3_*nota3); i3 = qtd3-qtd3_; iq3 = qtd3_; } else { valor-= (qtd3*nota3); i3 = 0; iq3 = qtd3; } } if (valor!=0) retorno = 1; else { printf("Notas de %d usadas: %d\n", nota1, iq1); printf("Notas de %d usadas: %d\n", nota2, iq2); printf("Notas de %d usadas: %d\n", nota3, iq3); printf("\nNotas Disponíveis: \n"); printf("notas de %d: %d\n", nota1, i1); printf("notas de %d: %d\n", nota2, i2); printf("notas de %d: %d\n", nota3, i3); } return retorno; } int main(){ int Valor, x50, y20, z10; Valor = 0; printf("Digite qtde de notas de 50:"); scanf("%d", &x50); printf("Digite qtde de notas de 20:"); scanf("%d", &y20); printf("Digite qtde de notas de 10:"); scanf("%d", &z10); printf("digite o valor do saque:"); scanf("%d", &Valor); if (!testanotas(50, 20, 10, Valor, x50, y20, z10)==0) if (!testanotas(20, 50, 10, Valor, y20, x50, z10)==0) if (!testanotas(10, 20, 50, Valor, z10, y20, x50)==0) printf("Saque indisponivel"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites