Ir para o conteúdo
PsySc0rpi0n

[Resolvido] Problema com operandos inválidos

Mensagens Recomendadas

PsySc0rpi0n

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:

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PsySc0rpi0n

Ok. Já vi. Foi descuido. o "i" é o contador do for, por isso foi sem querer que o declarei como float... bahhh...

Editado por thoga31

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PsySc0rpi0n

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.

Editado por PsySc0rpi0n

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.