andreibalu

Untitled

Apr 22nd, 2021
484
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.54 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3.  
  4. #include <time.h>
  5. #include <fstream>
  6. #include <time.h>
  7. #include <fstream>
  8.  
  9.  
  10.  
  11.  
  12. #define INTERVAL 500   //iteratii pt estimarea unui pi
  13. #define k 50   //numar incercari de estimare pi
  14.  
  15. using namespace std;
  16.  
  17. int main()
  18. {
  19.     ofstream f("rezultate.txt");
  20.     int interval, i;
  21.     double rand_x, rand_y, origin_dist, pi;
  22.     int circle_points = 0, square_points = 0;
  23.     clock_t t1,t2;
  24.  
  25.     int j,x=0;
  26.     double time_taken[50];
  27.     srand(time(NULL));
  28.  
  29. for(j=0;j<k;j++){       //k teste
  30.     double timp=0;
  31.     t1 = clock();
  32.     for (i = 0; i < (INTERVAL * INTERVAL); i++) {
  33.         rand_x = double(rand() % (INTERVAL + 1)) / INTERVAL;
  34.         rand_y = double(rand() % (INTERVAL + 1)) / INTERVAL;
  35.  
  36.  
  37.         origin_dist = rand_x * rand_x + rand_y * rand_y;
  38.  
  39.         if (origin_dist <= 1)
  40.             circle_points++;
  41.  
  42.  
  43.         square_points++;
  44.  
  45.  
  46.         pi = double(4 * circle_points) / square_points;
  47.  
  48.         //timp=timp+time_taken;
  49.  
  50.     }
  51.     t1 = clock() - t1;
  52.  
  53.     time_taken[x]= ((double)t1)/CLOCKS_PER_SEC;
  54.  
  55.  
  56.  
  57.     f <<"Timpul total este "<<time_taken[x]<<" secunde "<<"pentru "<<(INTERVAL*INTERVAL)<<" iteratii";
  58.     f<<(f,"\n");
  59.  
  60.     f << "Final Estimation of Pi = " << pi;
  61.     f<<(f,"\n");
  62.     x++;
  63.  
  64.     f<<(f,"----------------\n");
  65. }
  66.     double suma=0;
  67.     for(int p=0;p<x;p++){
  68.         suma=suma+time_taken[p];
  69.     }
  70.     f<<"Timpul total necesar pt 50 de teste este "<<suma<<" secunde"<<endl<<"iar timpul mediu pt fiecare estimare de Pi (la "<<(INTERVAL*INTERVAL)<<" de iteratii) este " << ((double)suma)/k<<" secunde";
  71.  
  72.     return 0;
  73. }
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
Add Comment
Please, Sign In to add comment