Ir para conteúdo
Fórum Script Brasil
  • 0

pessoal como faço para adaptar switch ao invés de if-else.


Pabloferreira

Pergunta

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

int main(int argc, char *argv[])
{
  float a,b,res;
  char op;
  printf ("Calculadora\n");
  printf ("Digite <operando><+-*/><operando>: ");
  scanf ("%f%c%f",&a,&op,&b);
  if (op == '+') res = a+b;
  else if (op == '-') res = a-b;
  else if (op == '*') res = a*b;
  else if (op == '/') res = a/b;
  else
  {
    printf ("Operação inválida (%c) entre os operandos %.2f e %.2f\n",
            op, a, b);
    system("PAUSE");    
    return 0;
  }
  printf ("%.2f %c %.2f = %.2f\n", a, op, b, res);
  system("PAUSE");    
  return 0;
}

 

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

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

int main(int argc, char *argv[])
{
  float a,b,res;
  char op;
  printf ("Calculadora\n");
  printf ("Digite <operando><+-*/><operando>: ");
  scanf ("%f%s%f",&a,&op,&b);
  switch(op){
  case '+':
      res = a+b;
       break;
  case '-':
      res = a-b;
      break;
  case '*':
      res = a*b;
      break;
  case '/':
      res = a/b;
      break;
  default:
    printf ("Operação inválida (%c) entre os operandos %.2f e %.2f\n",
            op, a, b);
    break;
  }
  printf ("%.2f %c %.2f = %.2f\n", a, op, b, res);
  system("PAUSE");    
  return 0;
}

Link para o comentário
Compartilhar em outros sites

  • 0

você deve usar o SWITCH quando os valores forem definidos (fixos) e o IF é pra qualquer condição 

A tendência é o switch ser ligeiramente mais rápido porque provavelmente ele é implementado com uma tabela de lookup. E a comparação só seria justa de no if a expressão também faz uma expressão de igualdade simples. Qualquer outra expressão tornará a comparação sem sentido já que fazem coisas diferentes. Incluindo aí comparar com expressões diferentes. Então você pode comparar a performance destes exemplos:

switch (var) {
    case :
        //faz algo
        break;
    case 1:
        //faz algo
        break;
    case 2:
        //faz algo
        break;
    case 3:
        //faz algo
        break;
}

 

if (var == ) {
    //faz algo
} elseif ($var == 1) {
    //faz algo
} elseif ($var == 2) {
    //faz algo
} elseif ($var == 3) {
    //faz algo
}
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...