Ir para conteúdo

POWERED BY:

Arquivado

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

igorbras5

Algoritmo de saque eletrônico

Recommended Posts

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

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

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

×

Informação importante

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