Olá! Estou iniciando na programação no curso de Sistemas de Informação e possuo uma dúvida em um código de caixa eletrônico.
Minha dúvida: O meu código possui um problema que não consigo resolver. Em certos valores como 123, 196, 111 e 121 o programa imprime a quantidade errada de notas. Para 123, por exemplo, ele imprime uma nota de 100, uma de 20 e uma de 2, sendo que deveria imprimir uma nota de 100, uma de 10, uma de 5 e 4 notas de 2 reais.
Requisitos do código:
O código deve receber um valor do tipo inteiro a ser sacado e, caso ele seja possível, retornar a quantidade de cédulas que a pessoa irá pegar. Deve-se usar a menor quantidade de cédulas possíveis. As cédulas disponíveis no caixa eletrônico são de 200, 100, 50, 20, 10, 5 e 2.
O programa deve possuir uma assinatura" void realizarSaque(int valor, int* cedulas) " onde:
- valor: corresponde ao valor lido na função main para ser sacado
- cedulas: vetor de tamanho 7 contendo o valor das cédulas disponíveis.
Nenhuma variável global poderá ser utilizada dentro da função realizarSaque.
Para casos impossíveis o programa deve retornar a mensagem:
" não e possivel sacar o valor solicitado "
Para valores inseridos menores que 0 o programa deve retornar a mensagem:
" Informe um valor maior que 0 "
Meu código:
#include<stdio.h>
int realizarSaque(int valor, int *cedulas){
int n200,n100,n50,n20,n10,n5,n2;
printf("%d cedula(s) de 200.00",n200);
printf("\n%d cedula(s) de 100.00",n100);
printf("\n%d cedula(s) de 50.00",n50);
printf("\n%d cedula(s) de 20.00",n20);
printf("\n%d cedula(s) de 10.00",n10);
printf("\n%d cedula(s) de 5.00",n5);
printf("\n%d cedula(s) de 2.00",n2);
return 0;
}
int main()
{
int valor, cedulas[7] = {200, 100, 50, 20, 10, 5, 2};
printf("Digite o valor a ser sacado: ");
scanf("%d", &valor);
if(valor == 1 || valor == 3){
printf("não e possivel sacar o valor solicitado");
return 0;
}
if(valor > 0){
realizarSaque(valor, cedulas);
return 0;
}
if(valor <= 0){
printf("Informe um valor maior que 0");
return 0;
}
else{
main();
}
return 0;
}
Pergunta
Breno Rangel
Olá! Estou iniciando na programação no curso de Sistemas de Informação e possuo uma dúvida em um código de caixa eletrônico.
Minha dúvida: O meu código possui um problema que não consigo resolver. Em certos valores como 123, 196, 111 e 121 o programa imprime a quantidade errada de notas. Para 123, por exemplo, ele imprime uma nota de 100, uma de 20 e uma de 2, sendo que deveria imprimir uma nota de 100, uma de 10, uma de 5 e 4 notas de 2 reais.
Requisitos do código:
O código deve receber um valor do tipo inteiro a ser sacado e, caso ele seja possível, retornar a quantidade de cédulas que a pessoa irá pegar. Deve-se usar a menor quantidade de cédulas possíveis. As cédulas disponíveis no caixa eletrônico são de 200, 100, 50, 20, 10, 5 e 2.
O programa deve possuir uma assinatura" void realizarSaque(int valor, int* cedulas) " onde:
- valor: corresponde ao valor lido na função main para ser sacado
- cedulas: vetor de tamanho 7 contendo o valor das cédulas disponíveis.
Nenhuma variável global poderá ser utilizada dentro da função realizarSaque.
Para casos impossíveis o programa deve retornar a mensagem:
" não e possivel sacar o valor solicitado "
Para valores inseridos menores que 0 o programa deve retornar a mensagem:
" Informe um valor maior que 0 "
Meu código:
#include<stdio.h>
int realizarSaque(int valor, int *cedulas){
int n200,n100,n50,n20,n10,n5,n2;
n200=valor/200;
n100=(valor%200)/100;
n50=((valor%200)%100)/50;
n20=(((valor%200)%100)%50)/20;
n10=((((valor%200)%100)%50)%20)/10;
n5=(((((valor%200)%100)%50)%20)%10)/5;
n2=((((((valor%200)%100)%50)%20)%10)%5)/2;
printf("%d cedula(s) de 200.00",n200);
printf("\n%d cedula(s) de 100.00",n100);
printf("\n%d cedula(s) de 50.00",n50);
printf("\n%d cedula(s) de 20.00",n20);
printf("\n%d cedula(s) de 10.00",n10);
printf("\n%d cedula(s) de 5.00",n5);
printf("\n%d cedula(s) de 2.00",n2);
return 0;
}
int main()
{
int valor, cedulas[7] = {200, 100, 50, 20, 10, 5, 2};
printf("Digite o valor a ser sacado: ");
scanf("%d", &valor);
if(valor == 1 || valor == 3){
printf("não e possivel sacar o valor solicitado");
return 0;
}
if(valor > 0){
realizarSaque(valor, cedulas);
return 0;
}
if(valor <= 0){
printf("Informe um valor maior que 0");
return 0;
}
else{
main();
}
return 0;
}
Não copiar essa parte:
<CODE>
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.