Ir ao conteúdo

Posts recomendados

Postado

Olá, boa noite. Gostaria de saber onde estou errando para solucionar esse exercício: 

Faça um programa que simule um calculador de 4 operações. Seu programa deverá ler dois números e o operador e
efetuar os cálculos, exibindo o resultado final.

#include <stdio.h>

int main(void) {
  int n1, n2;
  float resultado;
  char operador;
  
  printf("Digite um número: ");
  scanf("%d",&n1);
  printf("Digite outro número: ");
  scanf("%d",&n2);
  printf("Qual operação você deseja fazer:\n[1]+\n[2]-\n[3]x\n[4]/");
  scanf("%c",&operador);

  switch(operador)
  {
    case 1:
      resultado = n1 + n2;
        printf("O resultado é %f",resultado);
    break;

    case 2:
      resultado = n1 - n2;
        printf("O resultado é %f",resultado);
    break;

    case 3:
      resultado = n1 * n2;
        printf("O resultado é %f",resultado);
    break;

    case 4:
      resultado = n1 / n2;
        printf("O resultado é %f",resultado);
    break;
      
  }
   
  
  return 0;
}

 

 

18 minutos atrás, Robs156 disse:

Olá, boa noite. Gostaria de saber onde estou errando para solucionar esse exercício: 

Faça um programa que simule um calculador de 4 operações. Seu programa deverá ler dois números e o operador e
efetuar os cálculos, exibindo o resultado final.

#include <stdio.h>

int main(void) {
  int n1, n2;
  float resultado;
  char operador;
  
  printf("Digite um número: ");
  scanf("%d",&n1);
  printf("Digite outro número: ");
  scanf("%d",&n2);
  printf("Qual operação você deseja fazer:\n[1]+\n[2]-\n[3]x\n[4]/");
  scanf("%c",&operador);

  switch(operador)
  {
    case 1:
      resultado = n1 + n2;
        printf("O resultado é %f",resultado);
    break;

    case 2:
      resultado = n1 - n2;
        printf("O resultado é %f",resultado);
    break;

    case 3:
      resultado = n1 * n2;
        printf("O resultado é %f",resultado);
    break;

    case 4:
      resultado = n1 / n2;
        printf("O resultado é %f",resultado);
    break;
      
  }
   
  
  return 0;
}

 

 

Opa, descobri meu erro já. obrigado

  • Amei 1
Postado

@Robs156    que bom que você descobriu ,  poste seu seu código ,   e creio que um dos erros possa ser por que você colocou os números com o tipo "int"  , assim não se pode inserir números quebrados ,   e seria melhor que fossem "float"  , e inicializar as variáveis , e colocar um loop , para que se possa fazer vários cálculos , até clicar no botão desligar para terminar e sair da calculadora  ,  e não precisa repetir o printf que mostra o resultado 4 vezes ,  pode ser apenas um ,  e  colocando ele depois do switch ,   e outra coisa é que faltou validar a operação de divisão , pois se digitar "zero"  no segundo operador , dará  um bug ,  pois na matemática  não se pode dividir nenhum número por zero .

  • Obrigado 1
  • 1 ano depois...
Postado

Bom Dia!

 

Apliquei as sugestões e/ou correções e acho que não esqueci nada.

 

c'11 - gcc'11.4 

#include <stdio.h>

int main ()
{
  float term1= 0 , term2= 0;
  int r= 0;
  char operador= 0;
  do
    {
    /* isto solicita e escanea um 1x termo */
     printf ("Digite um número: ");
     scanf ("%f",&term1);
     printf ("Digite outro número: ");
     scanf ("%f",&term2);
     /* ... um operador aritmético */
     printf ("Qual operação você deseja fazer:\n[1]+\n[2]-\n[3]x\n[4]/\n?");
     scanf (" %c",&operador);
     /* isto seleciona o 'circuito' dum dos cinco resultados */
     switch ((int)operador)
       {  
         case '1':/* soma */
           term1+= term2;
           break;
         case '2':/* diferença */
           term1-= term2;
           break;
         case '3':/* produto */
           term1*= term2;
           break;
         case '4':/* quociente */
           if (term2>0.0f) term1/= term2;
           else
             {
              printf ("%s%c","Divisão por zero.",'\n');
              term1= 0;
             }
           break;
         default: /* não é uma operação */
           printf ("%s","Operador inválido");
          /* isto lava uma linha: um extração de texto */
           while ((r= getchar ())!=EOF && r!='\n');
           term1= 0;
           break;
       }
     /* escreve o resultado */
     printf ("O resultado é %f",term1);
     printf ("%c%s",'\n',"Continuar [s para sim]? ");
     r= scanf (" %c",&operador); 
    }
  while (EOF!=r && 's'==operador);
  putchar ('\n');
}

 

obrigado!

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