Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #include <stdlib.h>
- #include <time.h>
- #define MAX(a,b) (a>b)?a:b
- //funkcja dla ktorej licze calke
- double f(double x)
- {
- return -1 * pow(x - 4, 2) + 5;
- }
- 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ą
- {
- if ((y > 0) && (y <= f(x)))
- {
- return 1;
- }
- else
- {
- return 0;
- }
- }
- double losowanie(double a, double b) //losowanie x z przedzialu a do b
- {
- return (double)rand() / (double)(RAND_MAX + 1)*(b - a) + a;
- }
- void main()
- {
- double Xp;
- double Xk;
- double Y;
- double Pole=0;
- int N;
- printf("\nPodaj poczatek przedzialu calkowania:\t");//np. 0
- scanf_s("%lf", &Xp);
- printf("\n%lf", Xp);
- printf("\nPodaj koniec przedzialu calkowania:\t");//np. 10
- scanf_s("%lf", &Xk);
- printf("\n%lf", Xk);
- printf("\nPodaj dokladnosc calkowania(w ilosci punktow losowanych):\t");//np 15000, etc.
- scanf_s("%d", &N);
- printf("\n%d", N);
- srand(time(NULL));
- Y = ceil(MAX(f(Xp), f(Xk)));//zaokraglam do pelnej liczby Y maksymalne
- printf("\n%lf", Y);
- int t = 0;//zmienna pomocnicza do liczenia punktow
- for (int i = 0; i < N; i++)
- {
- if(CzyJest(losowanie(Xp, Xk), losowanie(0, Y)) == 1) //jesli punkt jest w prostokacie, to zmienna t sie powieksza o 1
- {
- t++;
- }
- printf("%d\t", t);
- }
- Pole = Y*(Xp - Xk)*(t/N);//rzutuje int N na double N, by nie bylo problemow z dzieleniem
- printf("Pole pomiedzy funkcja a osia OX wynosi: %lf", Pole); //drukowanie wyniku
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement