数値計算法レポート1

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int main(){
  6. double avg,stddev,temp,sum,sumsq,cnt;
  7. FILE *fpdata1, *fpdata2;
  8.  
  9. if( ( fpdata1 = fopen("temp.dat","rb")) == NULL){
  10. printf("error:cannot open temp.dat \n");
  11. exit(1);
  12. }
  13.  
  14. if( ( fpdata2 = fopen("report.txt","w")) == NULL){
  15. printf("error:cannot open file \n");
  16. exit(2);
  17. }
  18.  
  19. sum=0;
  20. sumsq=0;
  21.  
  22. for(cnt=0; ;cnt++){
  23. fscanf(fpdata1,"%lf",&temp);
  24. printf("input %lf\n",temp);
  25. if(temp==0.){
  26. printf("\n done! \n");
  27. break;
  28. }
  29. sum = sum + temp;
  30. sumsq = sumsq + pow(temp,2);
  31. printf("sum = %lf\n",sum);
  32. }
  33.  
  34. avg=sum/cnt;
  35. stddev=sqrt((sumsq-cnt*pow(avg,2))/(cnt-1));
  36.  
  37. fprintf(stderr,"cnt = %.0lf\naverage = %.1lf\nstandard deviation = %.1lf\n",cnt,avg,stddev);
  38. fprintf(fpdata2,"average = %.1lf\nstandard deviation = %.1lf\n",avg,stddev);
  39. fclose(fpdata1);
  40. fclose(fpdata2);
  41. }
最終更新:2011年05月27日 15:56