Ir ao conteúdo
  • Cadastre-se

C Estou tendo dificuldade com switch case


Robs156

Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

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!

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!