Ir ao conteúdo
  • Cadastre-se

C Erro scanf em calculadora básica


Skrill

Posts recomendados

Eu estava programando uma cauculadora básica por assim dizer utilizando a linguagem C, e meu codigo deu um erro onde o sncaf não estava reconhecendo o %c (chear) e passava direto para o default, sendo assim tentei passar o  %c (chear) para %f (float), o programa rodou mas obviamente o switch não reconheceu e passou para o default após, alguma ideia de como arrumar?

 

#include <stdio.h>

int main()
{
    float a,b;
    char op;
    
    ;printf("Digite o 1 valor");
    scanf("%f",&a);
    fflush(stdin);
    ;printf("Digite o 2 valor");
    scanf("%f",&b);
    fflush(stdin);
    
    printf("Escolha a operacao: ");
    scanf("%c",&op); //Erro nesta linha de codigo
    fflush(stdin);
    
    switch(op)
    {
        case '+':{
            printf("resultado= %f ", a+b);
            getchar();
            return(0);
        }
        case '-':{
            printf("resultado= %f", a-b);
            getchar();
            return(0);
        } 
        case '*':{
            printf("resultado= %f", a*b);
            getchar();
            return(0);
        }
        case '/':{
            printf("resultado= %f", a/b);
            getchar();
            return(0);
        }
        default:{
            printf("Essa operacao nao existe");
            getchar();
            return(0);
        }
    }    

    
;}


 

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

@Skrill    parece que na hora de ler os dados do teclado o scanf está pegando algum dado que esteja no buffer do tecado, então você precisa limpar o buffer antes de fazer a leitura do teclado, por isso você precisa colocar o fflush(stdin) antes do scanf, e o restante do código está funcionando bem , mas precisa alguns ajustes e no comando switch / case não precisa colocar essas chaves {  }  e precisa é colocar break ,  então aqui está um trecho do seu código já modificado :

printf("Digite o 1 valor ");
fflush(stdin);
scanf("%f",&a);
printf("Digite o 2 valor ");
fflush(stdin);
scanf("%f",&b);

printf(" Somar        ( + )\n");
printf(" Subtrair     ( - )\n");
printf(" Dividir      ( / )\n");
printf(" Multiolicar  ( * )\n");
printf("Escolha a operacao:  ");
fflush(stdin);
scanf("%c",&op); /*//Erro nesta linha de codigo*/
fflush(stdin);
switch(op)
{
    case '+':
        printf("resultado= %.2f ", a+b);
        getchar();
        /*return(0); use esse, se voce quiser terminar o programa*/
        break;  /*use esse, se quiser continuar e fazer outros calculos*/

 

  • Curtir 1
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...