Zanima me gdje je greska, program bi trebao izracunavati indekse koincidencije ako je m=1,2...7. Zanima me i kako se tretira 'ostatak', tj. ako duljina sifrata nije djeljiva s m.
Sifrat za koji sam isprobavao je tekst koj se nalazi u skripti sa stranica kolegija,pa ga ovdje nisam stavljao.
[code:1]
int freq[26];
int i,j,m,n;
double ic;
char sifrat[1000]="tekst iz skripte sa stranica prof. Dujelle";
for (m=1;m<=7;m++)
{
n=strlen(sifrat)/m;
printf("m=%d =>Ic : ",m);
for (i=0;i<m;i++)//u kojem smo retku
{
for (j=0;j<26;j++)
freq[j]=0;
for (j=0;j<n;j++)
freq[sifrat[n*i+j]-'A']++;
ic=0.0f;
for(j=0;j<26;j++)
ic+=((double)freq[j]*(freq[j]-1)/((double)n*(n-1)));
printf("%.3lf ",ic);
}
printf("\n");
}[/code:1]
Zanima me gdje je greska, program bi trebao izracunavati indekse koincidencije ako je m=1,2...7. Zanima me i kako se tretira 'ostatak', tj. ako duljina sifrata nije djeljiva s m.
Sifrat za koji sam isprobavao je tekst koj se nalazi u skripti sa stranica kolegija,pa ga ovdje nisam stavljao.
Kod: |
int freq[26];
int i,j,m,n;
double ic;
char sifrat[1000]="tekst iz skripte sa stranica prof. Dujelle";
for (m=1;m<=7;m++)
{
n=strlen(sifrat)/m;
printf("m=%d =>Ic : ",m);
for (i=0;i<m;i++)//u kojem smo retku
{
for (j=0;j<26;j++)
freq[j]=0;
for (j=0;j<n;j++)
freq[sifrat[n*i+j]-'A']++;
ic=0.0f;
for(j=0;j<26;j++)
ic+=((double)freq[j]*(freq[j]-1)/((double)n*(n-1)));
printf("%.3lf ",ic);
}
printf("\n");
} |
|