lukasz.proszek.info

Powrót do listy plików

generatorkongruentny.c

#include <stdio.h>
#include<math.h>

#define MNOZNIK 100000000.0

//float zaokraglij(float *x);

int main(){
        float x=0.26336377;
        int a=6;
        int b=0;
        int c=1;
        int i;
        
        for(i=0;i<1000;i++){
                x= fmod((a*x+b),c);

        //      printf("%.20f\n",x);
          if(x==0){
                         printf("\n\nwyzerowalo sie po %i iteracjach\n",i+1);
                         break;
                }
        }

        printf("x_%i= %.10f\n\n",i+1,x);
        
        printf("poprawiona wersja\n:");

        x=0.26336377;
        i=0;
        for(i=0;i<1000;i++){
//              x= zaokraglij(&x);     
                x= roundf(MNOZNIK*x)/MNOZNIK;
                x= fmod((a*x+b),c);
//printf("%i\n",i);
//              printf("%.20f\n",x);
          if(x==0){
                         printf("\n\nwyzerowalo sie po %i iteracjach\n",i+1);
                         break;
                }
        }
        
        printf("x_%i=%12.10f\n",i,x);
        return 0;
        
}
/*
float zaokraglij(float *x){
        float iks = *x;
        iks = MNOZNIK * iks;
 
        if( (iks - floor(iks) < 0.5) ) //zaokraglanie w dol 
        {
          printf("\nprzypadek w dol");
          iks = floor(iks)/MNOZNIK;
        }
        else //zaokraglanie w gore 
        {
          printf("\nprzypadek w gore");
          iks = (floor(iks) + 1)/MNOZNIK;
        }

        return iks;

}*/


syntax highlighted by Code2HTML, v. 0.9.1
kod przerobiony z HTML na XHTML za pomocą HTML Tidy for Linux/x86