Jump to content
Fórum Script Brasil
  • 0

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


Pabloferreira
 Share

Question

#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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...