Marco Verdial Posted October 1, 2016 at 09:49 PM Report #599294 Posted October 1, 2016 at 09:49 PM 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 PsySc0rpi0n Posted October 1, 2016 at 10:19 PM Solution Report #599296 Posted October 1, 2016 at 10:19 PM (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 October 1, 2016 at 10:47 PM by PsySc0rpi0n 1 Report Kurt Cobain - Grunge misses you Nissan GT-R - beast killer
thoga31 Posted October 2, 2016 at 02:04 PM Report #599312 Posted October 2, 2016 at 02:04 PM 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. 1 Report Knowledge is free!
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now