Jump to content
Upper

Soma de n float elementos

Recommended Posts

Upper

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?

Share this post


Link to post
Share on other sites
Upper

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

Share this post


Link to post
Share on other sites
pedrosorio

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


Não respondo a dúvidas por mensagem.

Share this post


Link to post
Share on other sites
pedrosorio

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.


Não respondo a dúvidas por mensagem.

Share this post


Link to post
Share on other sites
Upper

#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

Share this post


Link to post
Share on other sites
pedrosorio

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.


Não respondo a dúvidas por mensagem.

Share this post


Link to post
Share on other sites
Upper

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

Share this post


Link to post
Share on other sites
pedrosorio

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

E já recompilaste? xD


Não respondo a dúvidas por mensagem.

Share this post


Link to post
Share on other sites
pedrosorio

Não deve ser mas mete no scanf:

scanf(" %f", v + ind);


Não respondo a dúvidas por mensagem.

Share this post


Link to post
Share on other sites
Upper

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?

Share this post


Link to post
Share on other sites
Upper

#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?

Share this post


Link to post
Share on other sites
Upper

#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"

Share this post


Link to post
Share on other sites
pedrosorio

Tens um ; a mais depois do segundo ciclo for.

Os pontos e vírgula... aiai


Não respondo a dúvidas por mensagem.

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.