npresto 0 Denunciar post Postado Outubro 25, 2006 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
Márcio Paiva 0 Denunciar post Postado Outubro 25, 2006 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
Márcio Paiva 0 Denunciar post Postado Outubro 25, 2006 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
npresto 0 Denunciar post Postado Outubro 25, 2006 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
Márcio Paiva 0 Denunciar post Postado Outubro 25, 2006 Vlw :) Compartilhar este post Link para o post Compartilhar em outros sites