I can't figure out why... Can you help a bit?
Here are the auxiliar files: Attachment 11954
Code:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include "mersenne.c"
#define alpha 0.85
#define NN 1000
int nr=0;
void sortare(double *v1, int *v2, int lun){
int i, modif, aux;
double aux2;
do{
modif=0;
for(i=1;i<lun;++i)
if(v1[i-1] < v1[i]) {
aux2=v1[i-1];
v1[i-1]=v1[i];
v1[i]=aux2;
aux=v2[i-1];
v2[i-1]=v2[i];
v2[i]=aux;
modif=1; }
}while(modif);
};
/*
double *prodLinieMatrice(int m, double *pi, double **G)
{
int i,j;
double p;
p=0;
for(i=0;i<m;i++)
{
for(j=1;j<m;j++)
p=p+pi[i]*G[i][j];
}
return p;
}*/
double norma(int m, double *v)
{
int i;
double sum=0;
for(i=0;i<m;i++)
sum=sum+v[i]*v[i];
return sqrt(sum);
}
double *diferentaV(int m, double *v, double *w)
{
int i;
double *dif;
if((dif=(double*)malloc(m*sizeof(double*)))==NULL)
{
printf("Eroare la alocare dinamica");
exit(1);
}
for(i=0;i<m;i++)
dif[i]=v[i]-w[i];
return dif;
}
int *simDistr(double *pi,double **g,int n,int m)
{
double u,F,*p;
int j,k,i,*s;
if((s=(int*)malloc(n*sizeof(int)))==NULL)
{
printf("Eroare la alocare dinamica");
exit(1);
}
if((p=(double*)malloc(m*sizeof(double)))==NULL)
{
printf("Eroare la alocare dinamica");
exit(1);
}
j=0;
u=genrand_real2();
F=pi[0];
while(u>F)
{
j=j+1;
F=F+pi[j];
}
s[0]=j;
i=s[0];
for(k=0;k<n;k++)
{
p=g[i];
j=0;
u=genrand_real2();
F=p[0];
while(u>F)
{
j=j+1;
F=F+p[j];
}
s[k]=j;
i=s[k];
}
return s;
}
int main(void)
{
FILE *f,*k;
int m=13;
int i,j,z,*lm,**H;
double **Q,**G,**e;
f=fopen("hyperlink.in","rt");
if(!f)
{
printf("eroare la fisier");
exit(1);
}
if((H=(int**)malloc(m*sizeof(int*)))==NULL)
{
printf("Eroare la alocare dinamica");
exit(1);
}
for(i=0;i<m;i++)
H[i]=(int*)malloc(m*sizeof(int));
for(i=0;i<m;i++)
for(j=0;j<m;j++)
fscanf(f,"%d",&H[i][j]);
if((Q=(double**)malloc(m*sizeof(double*)))==NULL)
{
printf("Eroare la alocare dinamica");
exit(1);
}
for(i=0;i<m;i++)
Q[i]=(double*)malloc(m*sizeof(double));
for(i=0;i<m;i++)
for(j=0;j<=m;j++)
Q[i][j]=0;
for(i=0;i<m;i++)
{
int k=0;
for(j=0;j<m;j++)
if(H[i][j]!=0) k++;
if(k!=0)
{
for(j=0;j<m;j++)
if(H[i][j]==1) Q[i][j]=1.0/k;
}
else
if(k==0)
for(z=0;z<m;z++)
Q[i][z]=1.0/m;
}
if((G=(double**)malloc(m*sizeof(double*)))==NULL)
{
printf("Eroare la alocare dinamica");
exit(1);
}
for(i=0;i<m;i++)
G[i]=(double*)malloc(m*sizeof(double));
printf("\n aici \n");
if((e=(double**)malloc(m*sizeof(double*)))==NULL)
{
printf("Eroare la alocare dinamica");
exit(1);
}
for(i=0;i<m;i++)
e[i]=(double*)malloc(m*sizeof(double));
for(i=0;i<m;i++)
for(j=0;j<m;j++) e[i][j]=1.0/m;
for(i=0;i<m;i++)
for(j=0;j<m;j++)
G[i][j]=alpha*Q[i][j]+(1-alpha)*e[i][j];
for(i=0;i<m;i++)
for(j=0;j<m;j++)
printf("%.3lf ",G[i][j]);
fclose(f);
fclose(k);
system("pause");
return 0;
}