Gabiccs Postado Abril 18, 2011 Denunciar Share Postado Abril 18, 2011 Criei um código que deveria encontrar o zero da função. Mas, deve ser aplicado 21 vezes (valores diferentes).Fiz as matrizes que indicam tais valores, mas não consigo fazer o código percorrer as matrizes.O resultado sempre apresenta os valores para quando 'n=0'. 'n' foi declarado como uma variável global.#include <stdio.h>#include <stdlib.h> #include <math.h>int n = 0;double f(float o) { double q[21]= {388.07341, 418.81479, 442.16885, 462.16931, 480.01095, 496.37744, 511.99764, 525.99764, 541.28612, 555.60796, 570.77167, 593.81948, 616.10838, 639.92981, 648.86987, 658.60439, 666.37960, 672.93722, 677.64320, 677.64320, 677.64320}; double p[21]= {131.31613, 141.60402, 148.87696, 155.24767, 161.23076, 166.96861, 171.67016, 179.48304, 187.87701, 191.80595, 202.06493, 225.74231, 258.89635, 286.37328, 301.45585, 317.76931, 334.90509, 353.95479, 375.74816, 404.68645, 420.15252}; double f[21]= {0.00022, 0.00068, 0.00124, 0.00192, 0.00275, 0.00376, 0.00494, 0.00659, 0.00910, 0.01179, 0.01553, 0.02290, 0.03279, 0.04229, 0.04697, 0.05168, 0.05684, 0.06319, 0.07201, 0.08735, 0.09867}; return (q[n] - o * pow (1 + 2.25*f[n]*f[n] - 2*1.5*f[n]*cosh ((3*p[n])/(2*o)),1/2)); } main () {int i, maxi;i=1; maxi=30;float a,b, med, E;a=300;b=1000;E= 0.0001;while ((n=!20)) {do { med=(a+b)/2; if (f(a)*f(med)<0) { b=med; } else { a=med; } i++; }while (((b-a)>E) || (i<=maxi)); printf(" Ponto %d \nA raiz esta entro o intervalo %f e %f\n Sendo aproximadamente %f\n Foram necessarias %d iteracoes\n\n\n",n, a, b, med, i); n++; } system ("pause");} [/codebox]É possível incrementar o valor de uma variavel global??Por favor alguém me ajude!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 William Rodrigues Postado Abril 19, 2011 Denunciar Share Postado Abril 19, 2011 Saudações,Sim, é possível, mas o seu caso é outro.O erro no seu código está no sinal da comparação do while().O correto seria:while ((n != 20)) { ... } Abraços,William Rodrigues. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabiccs Postado Abril 19, 2011 Autor Denunciar Share Postado Abril 19, 2011 é, realmente essa parte estava errada. Obrigada!Mas ainda assim o código não faz o que eu qria.porque esse 'n' declarado na função main não percorre as matrizes da função f, que era o que eu precisava...E, não sei como fazer isso.Acredito que seja com ponteiros... Mas, como foge do que eu sei, vou ter que estudar ainda. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Gabiccs
Criei um código que deveria encontrar o zero da função. Mas, deve ser aplicado 21 vezes (valores diferentes).
Fiz as matrizes que indicam tais valores, mas não consigo fazer o código percorrer as matrizes.
O resultado sempre apresenta os valores para quando 'n=0'.
'n' foi declarado como uma variável global.
É possível incrementar o valor de uma variavel global??
Por favor alguém me ajude!!
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.