Code:
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include"mersenne.c"
#define alpha 1.0734
#define max_length 5000
int i, j, l, n, m, max;
void sortare(double *a,int n)
{
int i,schimb;
float aux;
do
{
schimb=0;
for(i=0;i<n-1;i++)
if(a[i]>a[i+1])
{
aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
schimb=1;
}
}while(schimb);
}
int cauta(int i, int n, double *Y, int *cont, double val)
{
int mij;
if(val<=Y[0])
cont[0]++;
else
{
if(i==(n-1))
cont[n]++;
else
{
mij=(i+n)/2;
if(val<=Y[mij])
cauta(i,mij,Y,cont,val);
else
cauta(mij,n,Y,cont,val);
}
}
}
int main()
{
FILE *f,*h,*g,*zdistr,*zsim;
h=fopen("Zdateprel.txt","wt");
f=fopen("Zdate1.txt","rt");
g=fopen("Zprobteor.txt","wt");
zdistr=fopen("Zdistr.txt","wt");
zsim=fopen("Zdatesim.txt","wt");
int *D,*viz;
double sum=0,C,*pe,*Y,*sim,*prob,val;
D=(int*)malloc(max_length*sizeof(int));
if(!D)
{
printf("Eroare alocare memorie.\n");
exit(EXIT_FAILURE);
}
i=0;
while(!feof(f))
{
i++;
fscanf(f,"%d",&D[i]);
if(max<D[i]) max=D[i];
}
n=i;l=0;
pe=(double*)malloc(n*sizeof(double));
for(i=1;i<=max;i++)
{
int nr=0;
for(j=1;j<=n;j++)
if(i==D[j]) nr++;
l++;
pe[l]=(double)nr/(double)n;
}
sortare(pe,l);
for(i=1;i<=l;i++)
{
double k,y;
k=log10(i+1);
y=-log10(pe[i]);
fprintf(h,"%lf %lf\n",k,y);
fprintf(zdistr,"%lf\n",pe[i]);
}
for(i=1;i<=l;i++)
sum=sum+1.0/pow(i,alpha);
C=1/sum;
Y=(double*)malloc(m*sizeof(double));
for(i=1;i<=l;i++)
{
Y[i]=C/pow(i,alpha);
fprintf(g,"%lf \n",Y[i]);
}
sim=(double*)malloc(m*sizeof(double));
for(i=1;i<=l;i++)
sim[i]=genrand_real2();
viz=(int*)malloc(l*sizeof(int));
for(i=0;i<l;i++)
viz[i]=0;
for(i=0;i<=2000;i++)
{
val=sim[i];
cauta(0,m,Y,viz,val);
}
prob=(double*)malloc(l*sizeof(double));
for(i=1;i<=l;i++)
{
prob[i]=viz[i]/2000.0;
fprintf(zsim,"%lf \n",prob[i]);
}
fclose(f);
fclose(h);
return 0;
}
Error given: