Advertisement
Guest User

Untitled

a guest
Jan 16th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5.  
  6. #define MAX(a,b) (a>b)?a:b
  7.  
  8. //funkcja dla ktorej licze calke
  9. double f(double x)
  10. {
  11. return -1 * pow(x - 4, 2) + 5;
  12. }
  13.  
  14. int CzyJest(double x, double y) //funkcja zwraca 1, gdy punkt leży pomiedzy krzywą, a osią OX lub 0 gdy leży nad krzywą
  15. {
  16. if ((y > 0) && (y <= f(x)))
  17. {
  18. return 1;
  19. }
  20. else
  21. {
  22. return 0;
  23. }
  24. }
  25.  
  26. double losowanie(double a, double b) //losowanie x z przedzialu a do b
  27. {
  28. return (double)rand() / (double)(RAND_MAX + 1)*(b - a) + a;
  29. }
  30.  
  31. void main()
  32. {
  33. double Xp;
  34. double Xk;
  35. double Y;
  36. double Pole=0;
  37.  
  38. int N;
  39.  
  40.  
  41. printf("\nPodaj poczatek przedzialu calkowania:\t");//np. 0
  42. scanf_s("%lf", &Xp);
  43. printf("\n%lf", Xp);
  44.  
  45. printf("\nPodaj koniec przedzialu calkowania:\t");//np. 10
  46. scanf_s("%lf", &Xk);
  47. printf("\n%lf", Xk);
  48.  
  49. printf("\nPodaj dokladnosc calkowania(w ilosci punktow losowanych):\t");//np 15000, etc.
  50. scanf_s("%d", &N);
  51. printf("\n%d", N);
  52.  
  53. srand(time(NULL));
  54.  
  55. Y = ceil(MAX(f(Xp), f(Xk)));//zaokraglam do pelnej liczby Y maksymalne
  56. printf("\n%lf", Y);
  57.  
  58. int t = 0;//zmienna pomocnicza do liczenia punktow
  59.  
  60. for (int i = 0; i < N; i++)
  61. {
  62.  
  63. if(CzyJest(losowanie(Xp, Xk), losowanie(0, Y)) == 1) //jesli punkt jest w prostokacie, to zmienna t sie powieksza o 1
  64. {
  65.  
  66. t++;
  67. }
  68. printf("%d\t", t);
  69. }
  70.  
  71. Pole = Y*(Xp - Xk)*(t/N);//rzutuje int N na double N, by nie bylo problemow z dzieleniem
  72.  
  73. printf("Pole pomiedzy funkcja a osia OX wynosi: %lf", Pole); //drukowanie wyniku
  74. system("pause");
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement