pborawski

sekwencyjne pi

Jan 21st, 2013
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.10 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define PI 3.14159265358979311600
  6.  
  7. double losuj()
  8. {
  9.     return ( (double)rand() / (double)RAND_MAX );
  10. }
  11.  
  12.  
  13. int main(int argc, char *argv[])
  14. {
  15.    
  16.     double x,y;
  17.     double pi;
  18.     double blad,precyzja;
  19.    
  20.     int koniec = 0;
  21.     long int kolo = 0;
  22.     long int kwadrat = 0;
  23.     int czas1 = 0;
  24.     int czas2 = 0;
  25.    
  26.     srand(time(NULL));
  27.    
  28.     printf("Okresl precyzje obliczen: ");
  29.     scanf("%lf",&precyzja);
  30.     printf("Licze....\n");
  31.    
  32.     czas1 = time(NULL);
  33.    
  34.     while(!koniec)
  35.     {
  36.         x = ( (double)rand() / (double)RAND_MAX );
  37.         y = ( (double)rand() / (double)RAND_MAX );
  38.        
  39.         if( x * x + y * y < 1.0)
  40.             kolo++;
  41.         else
  42.             kwadrat++;
  43.            
  44.         pi = ( (double)kolo * 4.0 ) / ( (double)kwadrat + (double)kolo );
  45.        
  46.         blad = fabs( pi - PI );
  47.         if( blad < precyzja )
  48.             koniec = 1;
  49.        
  50.     }
  51.    
  52.     czas2 = time(NULL);
  53.    
  54.     printf("Czas potrzebny na obliczenie: %d\n", czas2 - czas1);
  55.     printf("Dana liczba pi: %1.20f\n", PI);
  56.     printf("obliczona wartość pi: %1.20f dla %ld/%ld trafień do koła z wszystkich losowań\n", pi, kolo, kolo + kwadrat);
  57.    
  58.    
  59.    
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment