Ir ao conteúdo
  • Cadastre-se

C Problema em um código em c


Posts recomendados

Olá a todos do grupo!

Estou com um pequeno problema num código que eu estou fazendo, ele não faz contas cetas e apresenta problemas quando escolho a opção de divisão

#include <stdio.h>

int main(){
    int num1, num2, conta;
    char arit;
    printf("Digite um numero: \n");
    scanf("%d", &num1);
    printf("Digite outro numero: \n");
    scanf("%d", &num2);
    printf("Escolha uma operacao alritmetica (+, -, *, /): \n");
    scanf("%s", &arit);
    if(arit == '+'){
        conta = num1 + num2;
        printf("O resultado da operacao e %d", conta);
    }
    if(arit == '-'){
        conta = num1 - num2;
        printf("O resultado da operacao e %d", conta);
    }
    if(arit == '*'){
        conta = num1 * num2;
        printf("O resultado da operacao e %d", conta);
    }
    if(arit == '/'){
        conta = num1 / num2;
        printf("O resultado da operacao e %d", conta);
    }
}

 

Link para o comentário
Compartilhar em outros sites

Quando for usar o scanf, coloque um espaço em branco na máscara, para limpar o buffer antes de realizar a leitura:

scanf(" %d", &num);

E quando você ler um número, coloque %*c para ler o [ ENTER ] que ficou no buffer antes de passar para o próximo comando:

scanf(" %d%*c", &num);

O espaço em branco limpa o buffer antes de ler o número, já o %*c limpa depois de ler o número. Dessa forma você "limpa os pés" ao entrar e ao sair de casa. Eu dei o exemplo com números, mas pode ser feito para qualquer tipo de dados.

Link para o comentário
Compartilhar em outros sites

10 minutos atrás, AdrianoSiqueira disse:

Quando for usar o scanf, coloque um espaço em branco na máscara, para limpar o buffer antes de realizar a leitura:


scanf(" %d", &num);

E quando você ler um número, coloque %*c para ler o [ ENTER ] que ficou no buffer antes de passar para o próximo comando:


scanf(" %d%*c", &num);

O espaço em branco limpa o buffer antes de ler o número, já o %*c limpa depois de ler o número. Dessa forma você "limpa os pés" ao entrar e ao sair de casa. Eu dei o exemplo com números, mas pode ser feito para qualquer tipo de dados.

Mesma coisa

Link para o comentário
Compartilhar em outros sites

Eu particularmente não recomendo usar o %d, acho ele muito genérico. Se você vai ler int use %i, vai ler float use %f e assim por diante. Você errou ao ler a operação matemática usando %s, que deveria ser %c por ser um char.

 

É uma boa prática de programação inicializar todas as variáveis, isso previne possíveis erros causados por lixo de memória. Aplicando as correções e as dicas que eu dei no post acima, fica assim:

#include <stdio.h>

int main(){
    double num1 = 0.0;
    double num2 = 0.0;
    double conta = 0.0;

    char arit = ' ';

    printf("Digite um numero: ");
    scanf(" %lf%*c", &num1);

    printf("Digite outro numero: ");
    scanf(" %lf%*c", &num2);

    printf("Escolha uma operacao alritmetica (+, -, *, /): ");
    scanf(" %c%*c", &arit);

    if(arit == '+') {
        conta = num1 + num2;
        printf("O resultado da operacao e %.2f \n", conta);
    } else if(arit == '-') {
        conta = num1 - num2;
        printf("O resultado da operacao e %.2f \n", conta);
    } else if(arit == '*') {
        conta = num1 * num2;
        printf("O resultado da operacao e %.2f \n", conta);
    } else if(arit == '/') {
        if (num2 != 0) {
            conta = num1 / num2;
        } else {
            conta = 0.0;
        }
        printf("O resultado da operacao e %.2f \n", conta);
    }

    return 0;
}

 

adicionado 1 minuto depois

Esqueci de mencionar, que é bom usar float ou double em uma calculadora, para poder realizar operações de divisão. E falando em divisão, sempre verifique se o segundo número é diferente de 0 para evitar erros aritméticos (nada pode ser dividido por 0).

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

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!