Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

charlesbaptistel

somar serie por parametro

Recommended Posts

Consegui fazer essa serie, mas o resultado nao esta saindo certo, poderia me dizer oq esta errado?

 

 

Escreva um programa que lê um valor inteiro e positivo N e envia para uma função que retorna, por parâmetro, o valor de S, representado pela série abaixo.

S = 1 + ½ + 1/3 + ¼ + 1/5 + 1/N.

 

 

 

#include <stdio.h>
#include <stdlib.h>
float SomaSerie(int n){
float S = 0;
if (n == 0)
return 1;
else{
S = S + (SomaSerie(n-1) + (1.0/(n)));
return S;
}
}
int main(void) {
int num; 
float soma;
printf("SOMA SERIE S: ");
printf("\nDigite um numero inteiro positivo: ");
scanf("%d", &num);
soma = SomaSerie(num);
printf("\nSoma Serie da Sequencia N: %.10f ", soma);
return EXIT_SUCCESS;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

S = S + (SomaSerie(n-1) + (1.0/(n)));
Trata-se de recursividade? Não tive tempo de estudar a respeito ainda...

 

Então, resolvi de outra forma:

for(i=1;i<=N;i++)
{
	S += 1/(float)i;
}

Outra coisa, acho que se N = 0, o resultado deve ser 0 e não 1, não está explicito no exercício, mas 1 é o mesmo que 1/1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A seqüência existe p/ N>0. Valores <= 0 devem ser filtrados.

 

#include <stdio.h>
#include <math.h>

double SomaSerie(int n){
  double soma = 0.0;

  for(int i = 1;i<=n;i++)
   soma+=pow((double)i,-1);
  return soma;
}

int main(void) {
  int num;

  printf("SOMA SERIE S: ");
  do {
  printf("\nDigite um numero inteiro positivo: ");
  scanf("%d", &num);
  } while (num <= 0);

  printf("\nSoma Serie da Sequencia N: %.10f ", somaSerie(num));
  return 0;
}

 

Deve ser isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isis, existe alguma diferença em termos de processamento entre a forma que eu fiz:

S += 1/(float)i;

e a forma que você fez:

soma+=pow((double)i,-1);

Ou apenas demonstrou uma forma diferente? ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei interessante a forma que a isis fez... só achei estranho utilizar este comando pow (para calculo de potência), pelo que entendi o -1 ao invés de multiplicar ele vai é dividir o numero é que nem se multiplicasse o numero por 0,5 hum. interessante testei e só achei 2 coisas ali para funcionar direitinho:

A chamada da função com o S de Soma maiusculo:

double SomaSerie(int n){

A função com o s de Soma minusculo no envio de num por copia:

printf("\nSoma Serie da Sequencia N: %.10f ", somaSerie(num));

return 0;

}

Esse return 0 ta fazendo o arquivo fechar antes de mostrar os resultados, pode ser o meu Dev mas tirando ele e deixando os somas iguais funfou direitinho, muito bom isis já me deu outra forma de ver as coisas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei interessante a forma que a isis fez... só achei estranho utilizar este comando pow (para calculo de potência), pelo que entendi o -1 ao invés de multiplicar ele vai é dividir o numero é que nem se multiplicasse o numero por 0,5 hum.

Não não, número elevado em potência com menas inverte a fração:

3 na menas 2 = 1/9

3/2 na menas 2 = 4/9

etc...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não não, número elevado em potência com menas inverte a fração:

3 na menas 2 = 1/9

3/2 na menas 2 = 4/9

etc...

Ooo... vivendo e aprendendo, obrigado José pelo esclarecimento.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Esse return 0 ta fazendo o arquivo fechar antes de mostrar os resultados

 

Edultra, C é uma linguagem procedural.A não ser que você esteja trabalhando com threads e processos ou usando condicionais e goto,não existe essa de fechar sem mostrar o resultado porque o registrador de instruções não pula instruções sequenciais.

 

É o Dev que faz isso. Se você executar isso no cmd.exe a janela não vai fechar. Odeio essa IDE por causa disso. 

 

 

 

E não é "menas".É "menos" ou "x negativo".

 

 

Quanto ao S+=1/(float)i : já tem uma função que faz isso. Vou ficar reinventando a roda pra quê?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É esse Dev é meio louco... o Visual C++ tambem tá dando uns bugs nervosos quando utilizo a biblioteca conio.h o estranho é que eu comento os comandos da biblioteca e mando bala funciona e depois que tiro os coments ele faz o debug de volta e volta tudo ao normal... tipo tem horas que da bug e outras não... beeemm estranho...

 

É que as vezes a gente esquece as funções.. hehe... eu mesmo esqueci no dia da prova e tive que utilizar uma logica aparecida com essa ai... rsrsrs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.