Ir ao conteúdo

Posts recomendados

Postado

Eae galera, beleza? Sou novo aqui no fórum e na área de programação, estava fazendo um programinha básico, para simular um caixa eletrônico, e estou com um problema, ele roda normal, mas quando entra no menu (switch case) ele para de funcionar, alguém pode dar uma olhada e se possível me ajudar ai? Agradeço desde ja!! valeu!!

 

CODE>>

#include<stdio.h>
int main()
{
    char menu, saque, deposito, saldo = 0;

    while(menu != 4)
    {
    printf("Bem vindo ao caixa eletrônico!\nQual operacao deseja realizar? \n\n1.Saque \n2.Deposito \n3.Saldo \n4.Encerrar Sessao \n\n");
    scanf("%d", menu);
    fflush(stdin);

    switch(menu)
    {
    case '1':
        system("cls");
        printf("Digite o valor que deseja retirar. \n");
        scanf("%f", &saque);
        fflush(stdin);
        if(saque > saldo)
        {
            printf("Saldo insuficiente para saque. \n");
        }
        else
        {
            printf("Saque realizado com sucesso, retire o dinehiro. \n", saldo = saldo - saque);
        }
        system("pause");
        system("cls");
        break;
    case '2':
        system("cls");
        printf("Digite o valor que deseja depositar. \n");
        scanf("%f", &deposito);
        fflush(stdin);
        printf("Valor depositado com sucesso. \n", saldo = saldo + deposito);
        system("pause");
        system("cls");
        break;
    case '3':
        system("cls");
        printf("O saldo atual da conta é de %.2f Reais. \n", saldo);
        system("pause");
        system("cls");
        break;
    case '4':
        return 0;
    default:
        system("cls");
        printf("\n voce digitou uma opcao invalida! \n\n");
        system("pause");
        system("cls");
        break;
    }
    }
}
 

Postado

Não testei, mas provavelmente é porque você declarou char mas está usando como int as variáveis.

Ou é porque ta faltando um & na hora do scanf menu.

coloca       scanf("%c", &menu);      e testa para ver.

Postado

Alguns erros:

 

1) Está utilizando a verificação "while()" para uma variável que não possui valor inicial. Troque por "do/while" para evitar que lixo em memória possa atrapalhar a verificação. E, o mais importante, sempre inicialize as variáveis.

 

do
{
    // Seu código ...
}
while(menu);

 

2) Leitura do menu está faltando "&" no "scanf()". Além disso, utilize um espaço em frente as máscaras ( "%s", "%d", "%c", ...) para evitar que a tecla "ENTER" atrapalhe na leitura, tornando desnecessário o uso da função "fflush(stdin)", até porque, essa função "fflush()" foi criada para limpara buffer de saída. Conforme apresentada na própria documentação, não é garantida sua funcionalidade para esses casos.

 

scanf(" %d", &menu);

 

3) Separe as variáveis para seus tipos correspondentes na atuação do código:

 

    int menu = 0;
    float saque = 0.0;
    float deposito = 0.0;
    float saldo = 0.0;

 

4) Com a variável "menu" sendo do tipo int, não há necessidade de utilizar '1' na função switch:

 

case 3:
                system("cls");
                printf("O saldo atual da conta é de %.2f Reais.\n", saldo);
                system("pause");
                system("cls");
                break;

 

Segue o código corrigido:

 

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
    int menu = 0;
    float saque = 0.0;
    float deposito = 0.0;
    float saldo = 0.0;

    do
    {
        printf("Bem vindo ao caixa eletrônico!\nQual operacao deseja realizar? \n\n1.Saque \n2.Deposito \n3.Saldo \n4.Encerrar Sessao \n\n");
        scanf(" %d", &menu);

        switch(menu)
        {
            case 1:
                system("cls");
                printf("Digite o valor que deseja retirar. \n");
                scanf(" %f", &saque);
                if(saque > saldo)
                {
                    printf("Saldo insuficiente para saque. \n");
                }
                else
                {
                    printf("Saque realizado com sucesso, retire o dinehiro.\nNovo saldo: %.2f\n", saldo = saldo - saque);
                }
                system("pause");
                system("cls");
                break;
            case 2:
                system("cls");
                printf("Digite o valor que deseja depositar. \n");
                scanf(" %f", &deposito);
                printf("Valor depositado com sucesso.\nNovo saldo: %.2f\n", saldo = saldo + deposito);
                system("pause");
                system("cls");
                break;
            case 3:
                system("cls");
                printf("O saldo atual da conta é de %.2f Reais.\n", saldo);
                system("pause");
                system("cls");
                break;
            case 4:
                return 0;
            default:
                system("cls");
                printf("\n voce digitou uma opcao invalida! \n\n");
                system("pause");
                system("cls");
                break;
        }
    }
    while(menu != 4);

    return 0;
}

Visitante
Este tópico está impedido de receber novas respostas.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!