Advertisement
Guest User

Untitled

a guest
Jun 25th, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. double compute(double x, double arr[], int size)
  6. {
  7. int i;
  8. double value = 0.0;
  9.  
  10. for(i = 0; i < size; i++)
  11. {
  12. value += (arr[i]*pow(x, i));
  13. }
  14. return value;
  15. }
  16.  
  17. int begin;
  18. int end;
  19. int increment;
  20. int low;
  21. int high;
  22. int size;
  23. double area;
  24. double width;
  25. double x1, x2, height;
  26.  
  27. double rec2(int start, int end, double width, double arr[], int size)
  28. {
  29. if(start- end == 0)
  30. {
  31. return 0;
  32. }
  33. if(start - end == -1)
  34. {
  35. x1 = low+(start) * width;
  36. x2 = low + end * width;
  37. height = compute((x1 + x2)/2.0, arr, size);
  38. return height * width;
  39. }
  40. int mid = ((start+ end) / 2);
  41. area = rec2(start, mid, width, arr, size) + rec2(mid, end, width,arr, size);
  42. return area;
  43. }
  44.  
  45. void rec1(double arr[], int size)
  46. {
  47. if(begin >= end)
  48. {
  49. return;
  50. }
  51. width = (double)(high-low) / begin * 1.0;
  52. area = 0.0;
  53. double v = rec2(0,begin, width, arr, size);
  54. printf("%d \t %lf\n", begin, v);
  55. begin += increment;
  56. return rec1(arr, size);
  57. }
  58.  
  59. void print_polynomial(int argc, char **argv, int i)
  60. {
  61. if(i < argc - 2)
  62. {
  63. printf(" %lf x^%d + ", atof (argv[i]), argc - i - 1);
  64. print_polynomial(argc, argv, i + 1);
  65. }
  66. else if(i == argc - 1)
  67. {
  68. printf(" + %lf", atof (argv[i]));
  69. return;
  70. }
  71. else if(i == argc - 2)
  72. {
  73. printf(" %lfx ", atof (argv[i]));
  74. print_polynomial(argc, argv, i + 1 );
  75. }
  76. else
  77. {
  78. printf("Uhhhh something broke! Sorry :(");
  79. return;
  80. }
  81. }
  82.  
  83. int main(int argc, char **argv)
  84. {
  85. //this part is to pass only the numbers needed for the polynomial
  86.  
  87. int i = 6;
  88. printf("p(x) = ");
  89. print_polynomial(argc,argv, i);
  90.  
  91. begin = atof(argv[1]);
  92. end = atof(argv[2]);
  93. increment = atof(argv[3]);
  94. low = atof(argv[4]);
  95. high = atof(argv[5]);
  96. int size = argc - 6;
  97. double arr[size];
  98.  
  99. for(int i = 0; i < size; i++)
  100. {
  101. arr[size-i-1] = atof(argv[i+6]);
  102. }
  103. area = 0.0;
  104. width = 0.0;
  105. rec1(arr, size);
  106.  
  107. return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement