fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<math.h>
  4. #include<time.h>
  5.  
  6. int counter; //乗算のカウンターをグローバル変数として宣言
  7.  
  8. //x^nを繰り返し計算して多項式の各項を計算する方法の間数polyを完成すること
  9. double poly(int n, double a[], double x){
  10.  
  11. double result = 0.0; // ← 追加(結果用)
  12.  
  13. // fot → for に修正(ここは必須)
  14. for(int i=0; i<=n; i++){
  15. double xn = 1.0; // ← 追加(x^i用)
  16.  
  17. // x^i を繰り返し計算
  18. for(int j=0; j<i; j++){
  19. xn *= x;
  20. counter++; //乗算カウント
  21. }
  22.  
  23. result += a[i] * xn;
  24. counter++; //乗算カウント
  25. }
  26.  
  27. return result; // ← 追加
  28. }
  29.  
  30. //Honer法で計算するhonerを完成すること
  31. double honer(int n, double a[], double x){
  32.  
  33. double result = a[n]; // ← 追加
  34.  
  35. for(int i=n-1; i>=0; i--){
  36. result = result * x + a[i];
  37. counter++; //乗算カウント
  38. }
  39.  
  40. return result; // ← 追加
  41. }
  42.  
  43. int main(){
  44. int n=40;
  45. double a[100], x=0.9, px;
  46. for(int i=0; i<=n; i++){
  47. a[i]=1.0*(i+1);
  48. }
  49. counter=0;
  50. px = poly(n, a, x);
  51. printf("poly: px=%f, n=%d, count=%d\n", px, n, counter);
  52. counter=0;
  53. px=honer(n, a, x);
  54. printf("honer: px=%f, n=%d, count=%d\n", px, n, counter);
  55. return 0;
  56. }
Success #stdin #stdout 0s 5312KB
stdin
Standard input is empty
stdout
poly:  px=93.215575, n=40, count=861
honer: px=93.215575, n=40, count=40