Jump to content

Erro no código: expected '}' before 'else'


Go to solution Solved by PsySc0rpi0n,

Recommended Posts

Posted

Boa noite a todos! Eu estou a tentar fazer uma calculadora básica em linguagem c (um exercicio). Eu tenho de verificar se o utilizador introduz um dos numeros que eu disponiblizo para cada uma das opreações caso contrário mando um printf a dizer que o numero introduzido é inválido. Peço desculpa se o código não está muito bonito, é que comecei agora a aprender na faculdade 😛 Eu fiz o código e está assim:

 

Na (vossa) linha 12 dá-me o seguinte erro:    error: expected '}' before 'else'

Na (vossa) linha 30 dá-me o seguinte erro:    error: expected identifier or '(' before 'else'

Na (vossa) linha 33 dá-me o seguinte erro:    error: expected identifier or '(' before '}' token

 

Se alguém me conseguir ajudar agradeço imenso 🙂

Desde já obrigado a quem ajudar!! 😄

 

void parte1_3 (int num1, int num2, int oper)
{
    int resultado;

    printf ("\n******CALCULADORA******\n1-Soma\n2-Subtracao\n3-Multiplicacao\n4-Divisao\n\n");
    printf ("Que calculo quer fazer? **numeros acima**: \n");
    scanf ("%d", &oper);
    printf ("Que numeros quer calcular?: **introduza espacadamente**\n");
    scanf ("%d%d", &num1, &num2);
    if (oper==1 || oper==2 || oper==3 || oper==4)
    {
        else if (oper=1)
        {
            resultado=num1+num2;
        }
        else if (oper==2)
        {
            resultado=num1-num2;
        }
        else if (oper==3)
        {
            resultado=num1*num2;
        }
        else
        {
            resultado=num1/num2;
        }
        printf ("O Resultado e: %d\n\n", resultado);
    }
    else
        printf ("Numero invalido!!!\n");

}
  • Solution
Posted (edited)

Esse if acho que está mal construído! Repara que o primeiro elseif, está dentro do if principal e não tem nenhum if antes! Percebeste?

Devias ter:

if (){
   ...
}else if () {
   ...
}else{
   ...
}

e tu tens:

if(){
   else if (){ //<-- este else if está mal. Tem que haver um if antes dele
      ...
   }
}else{
   ...
}

A solução passa por apagares o else e deixares só o if

if(){
   if (){
      ...
   }else if(){
      ...
   }else if(){
      ...
   }else{
      ...             
   }
}else{
   ...
}

E mais algumas considerações:

Atenção à operação de divisão.

Atenção à diferença entre operadores matemáticos e operadores de comparação. Tens um operador matemático no lugar de um operador de comparação.

Atenção ao tipo de dados da variável "resultado".

Edited by PsySc0rpi0n
  • Vote 1

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Posted

Gostaria de fazer mais uma observação, para além das mencionadas pelo @PsySc0rpi0n.

Na função parte1_3 são passados 3 argumentos, mas o valor destes é pedido ao utilizado dentro da própria função. Isto não faz sentido. Os argumentos de uma função devem passar valores já estabelecidos por quem a invocou.

O meu conselho é separar a parte I/O (Input/Output) da parte lógica. Infelizmente parece-me que isto não é ensinado desde cedo nas faculdades, o que leva à criação de maus hábitos que depois são difíceis de perder.

  • Vote 1

Knowledge is free!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.