• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Upper

Soma de n float elementos

25 mensagens neste tópico

Oi boas

Tou com uma duvida

preciso de criar um programa que receba um vector de x elementos do tipo float e faça a soma desses mesmos elementos de momento tenho este codigo:

#include <stdio.h>


int main(){

int n;
int ind;

printf("Quantos elementos e que sao: ");
scanf(" %d", &n);

int v[10];
for(ind = 0; ind < n; ind ++){
	v[ind]=0;
	printf("Elemento %d = ",(ind+1));
	scanf(" %d", &v[ind]); 

}

float total=0;
for(ind = 0 ; ind < n; ind++);
{
	total += v[ind];
}


printf(" %f", total);


}

So que ele nao efectua bem a soma do total. ALguem me pode ajudar?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Talvez esteja a converter este resultado para int:

total += v[ind];

experimenta fazer assim:

total = (float) (total + v[ind]);

é a unica coisa q me ocorre neste momento.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

depois dessa alteração experimentei fazer com 1 elemento e sendo esse o 3 o total apareceu.me 1.000000

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Parece-me evidente que o erro é estares a pedir um inteiro quando devias pedir um float no scanf (i.e. scanf(" %f",&v[ind]))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

continua a fazer a mesma coisa

Já agora mete scanf(" %f", &(v[ind]));

e não precisas de pôr o vector a zeros porque estás a pedir os valores ao utilizador.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas o array v é suposto ser inteiros ou floats?

Tens o array declarado como int v[10].

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>


int main(){

int n;
int ind;

printf("Quantos elementos e que sao: ");
scanf(" %d", &n);

float v[10];
for(ind = 0; ind < n; ind ++){

	printf("Elemento %d = ",(ind+1));
	scanf(" %f", &v[ind]); 

}

float total=0;
for(ind = 0 ; ind < n; ind++);
{
	total = (float) (total + v[ind]);

}


printf(" %f", total);


}

Continua com o mesmo erro, mesmo depois das duas modificacoes

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas o array v é suposto ser inteiros ou floats?

Tens o array declarado como int v[10].

Fail da minha parte em não ter reparado nisso. São esses dois erros, o %d e o facto de declares o array como sendo de inteiros.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas eu ja corrigi esses erros como esta explicito no meu post anterior e o erro e o mesmo :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas eu ja corrigi esses erros como esta explicito no meu post anterior e o erro e o mesmo :wallbash:

E já recompilaste? xD

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ja agora outra duvida sobre o mesmo programa:

Agora quero passar a parte que efectua a soma para uma funcao

#include <stdio.h>

float soma(int n);
int main(){

int n, ind;

printf("Quantos elementos e que sao: ");
scanf(" %d", &n);

float v[10];
for(ind = 0; ind < n; ind ++){

	printf("Elemento %d = ",(ind+1));
	scanf(" %f", &v[ind]); 

}
soma(n);
}

float soma(int n){

int ind;
float v[10];
float total=0;
for(ind = 0 ; ind < n; ind++)
{
	total = (float) (total + v[ind]);

}


printf(" %f", total);


}

so que agora quando executo o programa este da lixo no resultado do total. O que me falta?

Sera que o n que esta em soma(n) e o erro?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não está a passar os valores que leste anteriormente para a nova função. Em vez disso estás a declarar um novo vector v, que obviamente terá lixo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>

float soma(int n, float v[]);

int main(){

int n, ind;

printf("Quantos elementos e que sao: ");
scanf(" %d", &n);

float v[10];
for(ind = 0; ind < n; ind ++){

	printf("Elemento %d = ",(ind+1));
	scanf(" %f", &v[ind]); 

}
soma(n,v[10]);
}

float soma(int n, float v[]){

int ind;
float v[10];
float total=0;
for(ind = 0 ; ind < n; ind++)
{
	total = (float) (total + v[ind]);

}


printf(" %f", total);


}

E assim que o vector esta bem declarado?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens q passar float* v (q é igual a float v[], podes deixar como está).

E tirar a nova declaração do método soma.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

float soma(int n, float *v[]) aqui e que fica o * ?

e

soma(n,&v[10]); fica assim?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não, fica: soma(n, v);

e no método soma tiras a linha: float v[10].

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>

float soma(int n, float *v[]);

int main(){

int n, ind;

printf("Quantos elementos e que sao: ");
scanf(" %d", &n);

float v[10];
for(ind = 0; ind < n; ind ++){

	printf("Elemento %d = ",(ind+1));
	scanf(" %f", &v[ind]); 

}
soma(n,&v);
}

float soma(int n, float *v[]){

int ind;

float total=0;
for(ind = 0 ; ind < n; ind++)
{
	total +=  v[ind];

}


printf(" %f", total);


}

Agora diz que e invalido o operando + na funcao soma

e no main "passinf arg 2 of 'soma' from incompatible pointer type"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

soma(n,&v); -> retrira o &

float soma(int n, float *v[]){ -> retira o *

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens um ; a mais depois do segundo ciclo for.

Os pontos e vírgula... aiai

0

Partilhar esta mensagem


Link 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