Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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

Editado por Simon Viegas
Inserir tag CODE
  • 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






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

×