Ir ao conteúdo
  • Cadastre-se

C Problema programa de transferência bancária


Serena
Ir à solução Resolvido por sannoy,

Posts recomendados

Oi,

eu estou tentando criar esse código para operações bancárias usando switch, mas estou com dificuldade. Não importa se o saldo inicial é maior ou não, sempre informa saldo insuficiente.

Se alguém puder me ajudar eu agradeço.

/*Informa o saldo atualizado na conta depois de sacar ou transferir. Caso seja transferencia pede a conta de destino do valor.Se o valor for maior que o saldo na conta, informa: saldo insuficiente.*/

	float saldoIn, saldoFim;
    float valorOperado;
    int codigo, contaTransf;

    printf("\n Qual seu saldo atual? ");
    scanf("%f", &saldoIn);
    printf("\n Escolha uma das operaçoes abaixo.\n");
    printf("\n Digite: 1 - para Saque 2 - para Transferência \n");
    printf("\n Código de operaçao escolhido: ");
    scanf("%d", &codigo);


    switch (codigo){

    case 1:
    case 2:if (codigo==2){
                printf("\nInforme o valor a ser sacado: ");
                scanf("%f", &valorOperado);
                }
            else {
                printf("\nConta de Transferência: ");
                scanf("%d", &contaTransf);
                printf("\nInforme o valor a ser transferido: ");
                scanf("%f", &valorOperado);
            }

            saldoFim = saldoIn - valorOperado;
            
                 if (saldoFim >= saldoIn){
                    printf("\n Operaçao realizada com sucesso. Seu saldo atual é de %.2f \n", saldoFim);
                 }
                 else {
                    printf("\n\n Saldo Insuficiente \n");
                 }
            break;
    default: printf("\n Código informado inválido \n");
    }

 

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

@Serena    não tendo o código todo não tenho como testar , mas me parece que esse erro seja nessa linha do case 2 :

Desse :
if( saldoFim >= saldoIn )
{
  printf("\n Operaçao realizada com sucesso. Seu saldo atual é de %.2f \n", saldoFim);
}
else 
{
  printf("\n\n Saldo Insuficiente \n");               
}
break;

//-----------------=============------------************----------

Para Esse :

if( saldoFim > 0 )
{
  printf("\n Operaçao realizada com sucesso. Seu saldo atual é de %.2f \n", saldoFim);
}
else 
{
  printf("\n\n Saldo Insuficiente \n");
}
break;

 

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

  • Solução

 

Olá @Serena,

 

O seu erro foi basicamente com a variável saldoFim além de ser inútil a criação, neste simples caso, você estava verificando o valor final ao invés do valor operado causando o erro lógico, além da redundância causada pelo uso inadequado do switch() e if() fazendo a mesma verificação.

 

Como não foi passado o código inteiro eu presumo que o programa poderia ser simplificado da seguinte forma:

 

#include <stdio.h>

int main()
{
    float saldoInicial, valorOperado;
    int codigo, conta;

    printf("\n - Qual seu saldo atual? ");
    scanf("%e", &saldoInicial);
    printf("\n Digite:\n 1) Para Saque;\n 2) Para Transferência;");
    printf("\n Código de operaçao escolhido: ");
    scanf("%d", &codigo);

    switch (codigo)
    {
    case 1:
        printf("\n Informe o valor a ser sacado: ");
        scanf("%e", &valorOperado);
        break;
    case 2:
        printf("\n Conta de Transferência: ");
        scanf("%d", &conta);
        printf("\n Informe o valor a ser transferido: ");
        scanf("%e", &valorOperado);
        break;
    default:
        printf("\nCódigo informado inválido.\n");
        return 2;
    }

    if (valorOperado > saldoInicial)
    {
        printf("\n[!] Saldo Insuficiente \n");
        return 1;
    }

    printf("\n[+] Operaçao realizada com sucesso. Seu saldo atual é de %.2f \n", (saldoInicial - valorOperado));

    return 0;
}

 

Espero ter lhe ajudado de alguma forma, até mais!

 

  • Obrigado 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...