PsySc0rpi0n Posted April 16, 2013 at 11:18 PM Report #503495 Posted April 16, 2013 at 11:18 PM Boas malta... Ando a tentar resolver alguns exercícios sobre ponteiros porque ainda estou muito ver nesta matéria... Tenho o seguinte problema: Pretende-se uma função que calcule o seguinte somatório: http://img850.imageshack.us/img850/4396/codecogseqn31.gif Os argumentos da função são o número de elementos e a tabela. b) Escreva um programa para ler os elementos para a tabela, devendo esta ser alocada dinamicamente. Apresente o resultado do somatório definido na alínea anterior... Tenho o seguinte code mas está a dar o seguinte erro: #include <stdio.h> #include <math.h> #include <stdlib.h> int FuncSoma (int n, int *tab) { float soma = 0.0, i; for (i = 0; i < n; i++) soma = soma + pow (*(tab + i), (n - i)); return soma; } int main () { int num, i; int *tab; float soma; printf ("Quantos números vai inserir"); scanf ("%d", &num); if ((tab = malloc (sizeof (int)*num)) == NULL) { printf ("Erro de memória!\n"); exit (0); } printf ("Insira agora os %d valores!\n", num); for (i = 0; i < num; i++) scanf ("%d", (tab + i)); soma = FuncSoma (num, tab); printf ("A soma total é %.1f\n", soma); return 0; } Erro: ex_2.c:9:37: error: invalid operands to binary + (have ‘int *’ and ‘float’) Kurt Cobain - Grunge misses you Nissan GT-R - beast killer
mundo Posted April 17, 2013 at 08:11 AM Report #503517 Posted April 17, 2013 at 08:11 AM a tua soma é um float, e na função dizes que retorna um inteiro
Solution pmg Posted April 17, 2013 at 08:27 AM Solution Report #503520 Posted April 17, 2013 at 08:27 AM O teu problema está na linha soma = soma + pow (*(tab + i), (n - i)); Repara que "tab" é um ponteiro (definido como parametro da funcao) e "i" é um float (definido como variavel local à função). Não podes somar ponteiros e floats. Sugiro que mudes o tipo da variavel "i" para size_t. a tua soma é um float, e na função dizes que retorna um inteiro Isso não dá erro: apenas obriga a uma conversão implicita de valores. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
PsySc0rpi0n Posted April 17, 2013 at 10:32 AM Author Report #503559 Posted April 17, 2013 at 10:32 AM (edited) Ok. Já vi. Foi descuido. o "i" é o contador do for, por isso foi sem querer que o declarei como float... bahhh... Edited April 17, 2013 at 11:28 AM by thoga31 Kurt Cobain - Grunge misses you Nissan GT-R - beast killer
PsySc0rpi0n Posted April 17, 2013 at 12:54 PM Author Report #503598 Posted April 17, 2013 at 12:54 PM (edited) Este é um caso em que a mensagem de erro do gcc foi tudo menos esclarecedora. Pelo menos para mim. O problema estava na declaração da variável i e não na linha 9 como sugeriu o compilador. Mas já está resolvido. Obrigado. Edited April 17, 2013 at 12:56 PM by PsySc0rpi0n Kurt Cobain - Grunge misses you Nissan GT-R - beast killer
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