c/c++语言开发共享fprintf在经历循环时不会打印

我正在尝试在文档中打印某些内容,但它只适用于我尝试过的第一个h值! 我试图弄清楚自己,但我不得不在不到一个小时的时间内将这些代码交给我的教授,所以我有点绝望。 :/

#include  #include  double euler(double v0, double *t0, double h, double (*f)(double)); double dv(double v); int main(){ double vlim, t = 0; double *pt = &t; double h0 = 1.e-7; vlim = euler(0, pt, h0, dv); printf("O tempo ea velocidade limite para um passo de %.0e s sao respectivamente:n", h0); printf("%.0e se %lf mm/s.nn", *pt, vlim); double h = h0, v = 0; do { *pt = 0; v = euler(0, pt, h, dv); h /= 5.; } while (fabs(v-vlim)/v > 1e-5); printf("O passo necessario para atingir a convergencia na velocidade limite e' %.1e s.n",h); return 0; } double euler(double y, double *x, double h, double (*f)(double)){ FILE *arq = fopen("bolha.dat","w+"); double y0, eps = 1e-4; do{ y0 = y; y = y0 + h*f(y0); // Metodo de Euler *x += h; fprintf(arq, "%.1et%.7lfn", *x, y); } while (fabs((y-y0)/y) > eps); fclose(arq); return y; } 

dv不相关,所以我没有发布。 看起来它在循环中是非常愚蠢的,因为如果我把h0 = 2.e-8(这是我正在尝试打印的值)它适用于该值。

    我能够通过使文件成为euler函数的参数然后在循环之后再次在另一个文件上调用它来修复它。 这解决了问题,但我仍然不明白为什么以前没有工作。

     #include  #include  double euler(double v0, double *t0, double h, double (*f)(double), FILE *arquivo); double dv(double v); int main(){ FILE *saida = fopen("bolhateste.dat","w+"); double vlim, t = 0; double *pt = &t; double h0 = 1.e-7; vlim = euler(0, pt, h0, dv, saida); printf("O tempo ea velocidade limite para um passo de %.0e s sao respectivamente:n", h0); printf("%.0e se %lf mm/s.nn", *pt, vlim); double h = h0, v = 0; do { *pt = 0; v = euler(0, pt, h, dv, saida); h /= 5.; } while (fabs(v-vlim)/v > 1e-5); saida = fopen("bolha.dat","w+"); euler(0, pt, h, dv, saida); printf("O passo necessario para atingir a convergencia na velocidade limite e' %.1e s.n",h); return 0; } double euler(double y, double *x, double h, double (*f)(double), FILE *arquivo){ double y0, eps = 1e-4; do{ y0 = y; y = y0 + h*f(y0); // Metodo de Euler *x += h; fprintf(arquivo, "%.1et%.7lfn", *x, y); } while (fabs((y-y0)/y) > eps); return y; } 

      以上就是c/c++开发分享fprintf在经历循环时不会打印相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(计算机技术网)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ctvol.com/c-cdevelopment/522809.html

      (0)
      上一篇 2020年12月11日
      下一篇 2020年12月11日

      精彩推荐