Ir ao conteúdo

Posts recomendados

Postado

 

Estou estudando a linguagem C, porém, ao executar essa calculadora aparece um erro na tela. Alguém pode me ajudar a solucionar ? sou novo no ramo da programação.

 

 


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


   int main() {
    
      int operacao,n1,n2,resultado;
      
      
    printf("Digite um numero: ");
    scanf("%i", &n1);
    printf("Digite outro numero: ");
    scanf("%i", &n2);
    
    printf("Digite [1] para somar\n");
    printf("Digite [2] para multiplicar\n");
    printf("Digite [3] para dividir\n");
    printf("Digite [4] para subtrair\n");
    scanf("%i",operacao);
    
    switch(operacao)
    {
        
        case 1:
            resultado = n1 + n2;
            printf("%i", resultado);
            break;
            
            case 2:
            resultado = n1 * n2;
            printf("%i", resultado);
            break;
            
            case 3:
            resultado = n1 / n2;
            printf("%i", resultado);
            break;
            
            case 4:
            resultado = n1 - n2;
            printf("%i", resultado);
            break;
            
    
    }
    
    
    return 0;
}

     

  • Curtir 1
Postado

Olá!

Aqui rodou e o erro que aconteceu foi pra calcular os valores inteiros, sendo que as calculadoras usam Float e Double. e outra que faltou foi que, pra uso do scanf(" ",&), é necessario o Blibioteca conio.h; Ai você tira o <stdlib.h>.

A solução é você mudar o tipo primitivo int para float, e na saída, mostrar esse calculo retornado com a função da saída %f.

Mas também se não for usar valores altos, e caso for continuar a usar o Int, basta tira o return 0, e usar o getch();

 

Espero ter ajudado.

  • Curtir 1
Postado
4 horas atrás, LuisOPsum disse:

Olá!

Aqui rodou e o erro que aconteceu foi pra calcular os valores inteiros, sendo que as calculadoras usam Float e Double. e outra que faltou foi que, pra uso do scanf(" ",&), é necessario o Blibioteca conio.h; Ai você tira o <stdlib.h>.

A solução é você mudar o tipo primitivo int para float, e na saída, mostrar esse calculo retornado com a função da saída %f.

Mas também se não for usar valores altos, e caso for continuar a usar o Int, basta tira o return 0, e usar o getch();

 

Espero ter ajudado.

Biblioteca conio.h não é necessária para aplicações em modo texto.

Pode retirar a stdlib.h, ela não é necessária.

Faltou & antes da da variável operacao para o scanf.

O problema em declarar somente inteiros é que na divisão não terá os decimais, use float, mas no lugar do %i coloque %f.

O return 0 é necessário sim, ele avisa ao OS que o programa terminou sem erros.

  • Curtir 1
  • 4 anos depois...
Postado

Boa tarde!

 

A calculadora com C.

Falhou ao compilar com pelo menos dois alerta, sendo um crítico e outro relacionado.

a.c: Na função main’:
 a.c:13:9: aviso: formato ‘%i espera argumento do tipo int *’, mas argumento 2 tem tipo int [-Wformat=]
    13 |  scanf("%i",operação);
       |         ~^ ~~~~~~~~
       |          | |
       |          | int
       |          int *
 a.c:13:1: aviso: operacao é usado não inicializado [-Wuninitialized]
    13 |  scanf("%i",operação);
       |  ^~~~~~~~~~~~~~~~~~~~

Linha 13 exige o endereço!

 

No programa, não expressou um caso para operador inválido, sendo senso comum nesse exercício e outro que também não fez é o “Divisão por zero”, que acrescentei.

 

Agora sua calculadora compila!

c'11 - gcc11.4


#include <stdio.h>

int main ()
{
  int operacao , n1 , n2 , resultado;
  printf ("Digite um numero: ");
  scanf ("%i",&n1);
  printf ("Digite outro numero: ");
  scanf ("%i",&n2);
  printf ("Digite [1] para somar\n");
  printf ("Digite [2] para multiplicar\n");
  printf ("Digite [3] para dividir\n");
  printf ("Digite [4] para subtrair\n");
  scanf ("%i",&operacao);
  switch (operacao)
    {  
     case 1:
       resultado = n1 + n2;
       printf("%i",resultado);
       break;
     case 2:
       resultado = n1 * n2;
       printf ("%i",resultado);
       break;
     case 3:
       if (n2)
         {
          resultado = n1 / n2;
          printf ("%i",resultado);
         }
       else
         {
          printf ("%s%c","Divisão por zero!",'\n');
         }
       break;       
     case 4:
       resultado = n1 - n2;
       printf ("%i",resultado);
       break;
     default:/*
              *  Operador Inválido
              */
       printf ("%s%c","Operação inválida",'\n');
       break;
    }
}

 

  • Curtir 1

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!