Ir ao conteúdo

C Problema programa de transferência bancária


Ir à solução Resolvido por sannoy,

Posts recomendados

Postado

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
Postado

@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
  • Solução
Postado

 

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

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!