Ir ao conteúdo
  • Cadastre-se
Padawan da Engenharia

C++ Programa para executar 4 operações básicas com dois valores dados pelo usuário

Recommended Posts

Boa noite programadores.

 

O programa proposto seria executar quatro operações básicas de uma calculadora com apenas dois valores dado pelo usuário.

Porém há um erro na minha programação onde não consigo digitar a operação escolhido pelo usuário. Segue a programação e o Erro.

Obrigado.

#include<stdio.h>

int main ()
{
    int x,y,resultado;
    char z;
    printf ("Maior valor: ");
    scanf ("%d",& x);
    printf ("Menor valor: ");
    scanf ("%d",& y);
    printf ("Indique a operacao:\nadicao +\nsubtracao -\nmultiplicacao *\ndivisao /\n ");    
    scanf ("%c",& z);
    
    switch ( z )
    {
        case '+' :
            resultado = x+y;
            printf ("Resultado: %c",resultado);
            break;
        case '-' :
            resultado= x-y;
            printf ("Resultado: %c",resultado);
            break;
        case '*' :
            resultado= x*y;
            printf ("Resultado: %c",resultado);
            break;
        case '/' :
            resultado=x/y;
            printf ("Resultado: %c", resultado);
            break;
    default:
            printf ("Invalido");
    }

}

Erro.png

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Vinicius Zancanari Recomendo usar valores da Tabela ASCII para esses operandos.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro esta relacionado a função scanf. Após cada entrada o usuário tecla ENTER para confirma esse ENTER '\n' não é ignorado pelo comando  scanf ("%c",& z);, pelo contrário &z captura o caractere '\n' ENTER ou NOVA LINHA e depois testa resultando na mensagem de invalido.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Vinicius Zancanari    seu código está certo,  mas quando você está pegando dados inteiro do teclado e em seguida vai pegar caracteres então existe lixo no buffer do teclado e precisa limpar o buffer antes de fazer a leitura, e para isso você pode usar esse  comando  :

fflush(stdin); 

assim a leitura sairá certa,   e  nos case na hora de imprimir você colocou   " %c "   para imprimir inteiro e o certo seria   " %d "  ,   então seu código com algumas modificações ficaria assim :

#include<stdio.h>
#include <conio.h>
int main ()
{
    int x,y,resultado;
    char z;
    printf ("Maior valor: ");
    scanf ("%d",& x);
    printf ("Menor valor: ");
    scanf ("%d",& y);
    printf ("Indique a operacao:\n  + adicao\n  - subtracao\n  * multiplicacao\n  / divisao /\n ");
    fflush(stdin);
    scanf("%c",&z);
    switch ( z )
    {
        case '+' :
            resultado = x+y;
            printf ("Resultado: %d",resultado);
            break;
        case '-' :
            resultado= x-y;
            printf ("Resultado: %d",resultado);
            break;
        case '*' :
            resultado= x*y;
            printf ("Resultado: %d",resultado);
            break;
        case '/' :
            resultado=x/y;
            printf ("Resultado: %d", resultado);
            break;
    default:
            printf ("Invalido");
    }

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×