Ir para conteúdo

POWERED BY:

Arquivado

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

npresto

Articulando as funções.. mais não funciona....

Recommended Posts

Ola Galera...

 

Sou novo aqui no forum e tb na programação em C. É o seguinte, tenho que entregar um exercício em que preciso calcular a função seno e depois uma integral númerica só que tudo isso na unha e usando funções. Meu problema está em calcular a função seno, que é calculada atravez de uma série que é assim:

 

x= A sen(omega*T) [função que vai ser integrada numericamente]

 

senx= (-1)^k * x^2k+1/(2k+1)! + .... [série para o seno]

 

Onde: - ^ significa elevado

 

-k parcela da série

 

-A constante qualquer

 

Essa soma tem uma condição de parada que é entrada pelo usuario o eps.

 

Agora olha ai o meu problema:

 

#include <stdio.h>#include <stdlib.h>#include <math.h>double fat (int n){	double fat=1.0;	int i;	for(i=2; i<=n; i++){		fat=fat*i;	}	return fat;}double pot ( double x, int n){	double pot=1.0;	int i;	for(i=0; i<n; i++){		pot=pot*x;	}	return pot;}int main(){		double seno, checa;	int eps, omega, t, x, k;		printf("ENTRE COM EPSLON \n");	scanf("%d \n ", &eps);	printf("ENTRE COM OMEGA \n");	scanf("%d \n", ω);	printf("ENTRE COM t \n");	scanf("%d \n", &t);		x=omega*t;		for(k=1;checa<eps;k++){				checa=pot(x,2*k+1)/fat(2k+1);		seno=seno+(pot(-1,k)*pot(x,2*k+1)/fat(2k+1));			}		printf("Funcao seno = A %d" ,seno);			  system("PAUSE");	  return 0;}

O problema é que não sei porque esta dando erro "invalid suffix "k" on integer constant"´. Bom Galera se alguem ai puder me dar uma ajuda fico muito grato!!

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só o seguinte trecho do seu programa:

checa=pot(x,2*k+1)/fat(2k+1);seno=seno+(pot(-1,k)*pot(x,2*k+1)/fat(2k+1));

Nas duas linhas você utiliza a função fat:

...fat(2k+1)...

Não existe 2k em programação. Se você quer multiplicar, coloque 2*k.

xD

 

Acho que é só isso...

Testa lá, agora.

 

Espero que tenha ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só algumas dicas:

 

----------------1---------------

A diretiva for tem tres espaços:

for (espaço1 ; espaço2; espaço3)

O primeiro espaço existe justamente para se declarar variáveis. As variáveis declaradas lá são validas apenas dentro do for. Essa possibilidade ajuda a manter o código mais limpo e mais compreensivel.

Aqui está como ficaria o código:

for(int k=1;checa<eps;k++){
Note o 'int' antes do k.

E, claro, você removeria a declaração dele:

int eps, omega, t, x;
Note a ausência do k.

A mesma coisa vale para os for's contidos nas funções.

---------------------------------

 

 

----------------2----------------

No trecho:

scanf("%d \n ", &eps);
O que que esse '\n' tá fazendo aí?

Muda para:

scanf("%d", &eps);
E, claro, para as outras variáveis também.

----------------------------------

 

 

----------------3-----------------

printf("Funcao seno = A %d" ,seno);
seno é uma variável do tipo double;

Para exibir double, se usa %lf, e não %d(Que é para inteiro); %f é pra float.

Vai ficar:

printf("Funcao seno = A %lf" ,seno);
----------------------------------

 

 

Depois de tudo, o programa ainda naum está funcionando, a meu ver.

Tem uma coisa que me incomoda:

O que é 'checa'?

Nenhuma vez no programa você disse quanto valia checa, e está utilizando ele no laço for.

Outra coisa...

Nesse trecho:

printf("Funcao seno = A %lf" ,seno);

O que significa esse A??

 

 

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu ai pra todo mundo que ajudou....Minha nossa erros toscos os meus.. .To vendo que to precisando estudar mais!!! hahaha :wacko: Olha esse A ai é uma variavel do sistema massa-mola, que é o enunciado do programa...Na verdade ele não tem muita importancia nessa parte do problema.Márcio (hehe mal ai... hahha) a váriavel checa é uma condição de irrelevancia apartir dela o número que vai ser somado é muito muito pequeno e ja não faz diferença no resultado do seno....Ela tem que ser calculada junto com o seno e vai sendo verificada a cada nova parcela a ser somada... É não consegui ser mais claro heheheh Qual quer coisa me pergunta de novo.Mais uma vez muito obrigado pela ajuda ai!Abraços

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.