Ok, sou eu mais uma vez, com um problema aparentemente simples, mas que já está farto de aparecer como um erro e que eu não sei resolvê-lo. O que acontece é o seguinte, faço um 'if' normal e quero um 'else' logo a seguir, concluo o código e quando dou por mim tenho isto:
erro: ‘else’ without a previous ‘if’
Alguém me pode explicar se é necessário, qualquer coisa antes do 'if' e a mesma coisa para o 'else' ? :/
Se calhar é mais produtivo meter o código e onde se encontra os erros, é capaz de facilitar a análise e posterior resolução. Ok, então ai vai:
Como já deu para perceber, após a leitura do número de euros e de cêntimos é feito um conjusto de intruções que têm como objectivo:
- Calcular quantas moedas de 2€ são necessárias, seguidamente calcula quantas de 1€ são necessárias e assim sucessivamente.
Quanto aos erros:
Desculpem o tamanho do post e estar a ser bastante chato, mas agradeço desde já a quem me possa ajudar ^^
erro: ‘else’ without a previous ‘if’
Alguém me pode explicar se é necessário, qualquer coisa antes do 'if' e a mesma coisa para o 'else' ? :/
Se calhar é mais produtivo meter o código e onde se encontra os erros, é capaz de facilitar a análise e posterior resolução. Ok, então ai vai:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int euros, E2, E1, cent, C50, C20, C10, C5, C2, C1, aux;
printf ("\nNesse montante, quantos euros há?\n");
scanf ("%d", %euros);
E2 = euros/2; /* Para saber quantas moedas de 2€ são necessárias */
if (euros%2 != 0); /* Caso o montante seja um número ímpar, ou seja se o resto da divisão for igual a 1 */
{
E1 = 1; /* Temos de somar 1€ */
}
else
{
E1 = 0; /* Caso contrário, sendo o número par, não é necessário somar nada */
}
printf ("\nNesse montante, quantos cêntimos há?\n");
scanf ("%d", %cent);
aux = cent;
if (aux != 0); /* Se for diferente de 0 cêntimos */
{
if (aux >= 50);
{
aux - 50;
C50 = 1; /* temos 1 moeda de 50 cêntimos */
}
if (aux >= 20);
{
aux - 20;
C20 = 1; /* temos 1 moeda de 20 cêntimos */
}
if (aux >= 10);
{
aux - 10;
C10 = 1; /* temos 1 moeda de 10 cêntimos */
}
if (aux >= 5);
{
aux - 5;
C5 = 1; /* temos 1 moeda de 5 cêntimos */
}
if (aux >= 2);
{
aux - 2;
C2 = 1; /* temos 1 moeda de 2 cêntimos */
}
if (aux >= 1);
{
aux - 1;
C1 = 1; /* temos 1 moeda de 1 cêntimos */
}
}
else
{
cent = 0;
}
printf ("\nNesse montante há %d€ e %f cêntimo(s)\n", &euros, ¢);
printf ("%d moeda(s) de 2€\n", &E2);
printf ("%d moeda de 1€\n", &E1);
printf ("%d moeda de 50 cêntimos\n", &C50);
printf ("%d moeda de 20 cêntimos\n", &C20);
printf ("%d moeda de 10 cêntimos\n", &C10);
printf ("%d moeda de 5 cêntimos\n", &C5);
printf ("%d moeda de 2 cêntimos\n", &C2);
printf ("%d moeda de 1 cêntimo\n", &C1);
return 0;
}
Como já deu para perceber, após a leitura do número de euros e de cêntimos é feito um conjusto de intruções que têm como objectivo:
- Calcular quantas moedas de 2€ são necessárias, seguidamente calcula quantas de 1€ são necessárias e assim sucessivamente.
Quanto aos erros:
lab2_5.c: Na função ‘main’:
lab2_5.c:9:19: erro: expected expression before ‘%’ token
lab2_5.c:16:6: erro: ‘else’ without a previous ‘if’
lab2_5.c:22:19: erro: expected expression before ‘%’ token
lab2_5.c:30:14: aviso: statement with no effect [-Wunused-value]
lab2_5.c:35:14: aviso: statement with no effect [-Wunused-value]
lab2_5.c:40:14: aviso: statement with no effect [-Wunused-value]
lab2_5.c:45:14: aviso: statement with no effect [-Wunused-value]
lab2_5.c:50:14: aviso: statement with no effect [-Wunused-value]
lab2_5.c:55:14: aviso: statement with no effect [-Wunused-value]
lab2_5.c:59:6: erro: ‘else’ without a previous ‘if’
lab2_5.c:64:6: aviso: formato ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat]
lab2_5.c:64:6: aviso: formato ‘%f’ expects argument of type ‘double’, but argument 3 has type ‘int *’ [-Wformat]
lab2_5.c:66:6: aviso: formato ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat]
lab2_5.c:67:6: aviso: formato ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat]
lab2_5.c:68:6: aviso: formato ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat]
lab2_5.c:69:6: aviso: formato ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat]
lab2_5.c:70:6: aviso: formato ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat]
lab2_5.c:71:6: aviso: formato ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat]
lab2_5.c:72:6: aviso: formato ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat]
lab2_5.c:73:6: aviso: formato ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat]
Desculpem o tamanho do post e estar a ser bastante chato, mas agradeço desde já a quem me possa ajudar ^^