Ajuda em C

Há um momento
Novo

Proponho esta solucao simpatica que percebe se ha pagamentos a fazer, se o valor a usar cobre..
Caso pretenda apenas fazer troco de dinheiro, basta que diga q valor a pagar é 0.

espero ajudar...

"
# include <stdio.h>

int main()
{

int price, amount, change;
int twenty, ten, coin;

printf("Introduza a quantia a pagar: ");
if ( scanf ("%d", &price) <1 || price <0) {
printf("\n\nValor errado, tente novamente: ");return 0;
}
pay: printf("\nIntroduza a quantia com que pretende efectuar o pagamento : ");
if ( scanf ("%d", &amount) <1 || amount <0) {
printf("\n\nValor errado, tente novamente: ");return 0;
}
change = amount - price;
if (change < 0) {
printf("\n\nO valor a pagar é superior ao pagamento.\n");
goto pay;
}
twenty = change / 20;
ten = (change % 20) / 10;
coin = ((change % 20) % 10) / 1;
printf ( "\n\nO troco será %d €\n\n%5d .... notas de 20 €\n\n%5d .... notas de 10 €\n\n%5d .... moedas de 1 €", change, twenty, ten, coin);

return 0;
}

"
 
Aos que colocaram a resposta na forma de código completo:
Acho que não o devem fazer. Ao faze-lo estão a dar ao utilizador uma solução e não os mecanismos para conseguir lá chegar sozinhos. Podem complicar, no sentido em que se pode estar a dar soluções que em complexidade são muito grandes e o utilizador pode não compreender e assimilar. Pode-se dar uma solução que nada tem a ver com o que está a estudar no momento e baralhar mais ainda.

É preferível encaminhar o utilizador a perceber o erro que cometeu (se for o caso) ou encaminhar para uma solução.

É apenas a minha opinião.
 
Venho outra vez pedir-vos ajuda se não se importarem. Basicamente não estou a perceber porque me dá erro(
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: na função `_start':
(.text+0x20): referência indefinida a `main'
collect2: error: ld returned 1 exit status) neste programa
#include <stdio.h>
int perfeito(int num) {
int soma, i;
soma=0;
printf("Introduzir valor:");
scanf("%d", &num);

for (i=1; i<num; i++)
if (num%i==0){
soma=soma+i;
}

if (num==soma)
return 1;

return 0;

}

Se mudar o código para
#include <stdio.h>
int main(int num) {
int soma, i;
soma=0;
printf("Introduzir valor:");
scanf("%d", &num);

for (i=1; i<num; i++)
if (num%i==0){
soma=soma+i;
}

if (num==soma)
return 1;

return 0;

}

Não me dá erro, não estou a perceber o que estou a fazer de errado.
 
Na linguagem C o ponto de entrada do programa (onde o teu código realmente começa a ser executado) é uma função com a declaração int main(int argc, char *argv[]) ou int main(int argc, char **argv).

Quando não existe uma função com esta declaração (ou semelhante) o linker não sabe onde se encontra a função main e por essa razão não consegue executar o código.

A função main é comum a todos os programas escritos em C (na maior parte das linguagens de programação também existe uma função main) e não depende do código que estás a escrever.
 
Back
Topo