Код:
#include "stdafx.h"
#include<stdlib.h>
#include<stdio.h>
#include<iostream>
#include<math.h>
#include<string>
#include<conio.h>
#include <clocale>
using namespace std;
string s[16],buf;
void left( int a, int N){ //ôóíêöèÿ ñìåùåíèå íà 1 âëåâî
char temp=buf[0];
for (int i=0; i<N-1;i++) buf[i]=buf[i+1];
buf[N-1]=temp;
s[a]=buf;
}
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "Russian");
s[0]="МЭИЁЫРНЁЬЧГДКЧГЕЖЦМБХЩЭЪУЩЖЩЩДГГЧЛПИУНЛТФЮМГЬЮЩБЧЪЙЁОЪЗОПЧМЩПЦПИЭЬЖЮПЩМХНЪЙЁМЪЗЩЩГИЧАЭАЬЭЧЩМЪЛЛЙКЧМЕКБНЁЭЪБЫКДЛЬФШМЫПЭАТЬЪИАЧТЮШЩФАВЩЬЖОШРАЁЧАОЧХРЫЙЩЮРЁЦЭРТФШМГЩПМБВРЙЁМРИШЁЧЛЬТЛИЁШЩЩБЬЖЛЯШЛКЬШФРЁНЪГВКЮГЗУЩЖЕЬЦМЪЩНГГЖШМЮУООЧЯЛЯЬТЯУЁНЪСДУЬЮЩГРБЁЭРНЬЫЗАДЩЭИЩПЪЛЕУОВЬШРПГЮТЖГПЕГЙЩЧЪВЩГРЁЪЬЖЬАЛЙАТУЮЪЫЛЛАБЖБЫПЪЛЩЩЭНАЭЖАЧЦЭЭАЛЖЙЩЪРОЩЁХОЧТНМШДРПЙМРЮЕШЛНЧМЧМЩШЛНЗУНГЙЬЮАЁМЛЙЧПОМЖЩЦЙЁШЪКЁЭЩМИЙЕЖДЬКИГИПЭДЬЛКЁФЩЖЯГРЗАПЬЮЗАФЖЩПРПЧЦЪЛЬШЪЛЬЬШМЙЫКЛЧЗЮМЕУУЦЬПЫМИМЪГДЮЭМЗЭЯНЗУНГЙЬЮААПЫОАМФВЬМЪЦЬОДГЪЩЫЪЬЫЛАГУВГЧШЩЩЖКНЙЁМЩЩАТЪЯЗКУЖГЩЭЪШПЭНЁХЪЗИЭНМАЬЮОЧАЫМЫЩМЛТФЮМДЮЦМЙЩЬЩБМЖОЧСЛГЙЬКНЗУНЖЫПГГЪЩЩЖШЮПЪИЦФЦВЩШМЪЫЪКЕЩОМАШРПЩЩХПЙМРЛЕЩОМДПЭРКАЪРЦОРЗИЭНЖЙПЧЪЕЩЫЪЬЫМЩГШРПВЩЧЪВЩММГЖДГЫЫЯБААШСЮВФЛЩХЪКЕКЮГЕЩИРЁЭЭРЗКБКЁНЪРЕЩЭЖЙЖЭЭЙЩЧЪВЩЦРЁЧЯСДШЪККУНКЬЬЮГЗЩМИЁЧЯЛЧЛЧЬЫКЮГГЖЩМДЮФГИЭРПЙМРЛЕЩШСЩТОЙЦОЯМЙЦФХЧМДГДЮРБЁЩЮАИПБАФЭЪЗЪЩЭРАШЪЗ";
string s2="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
buf=s[0];
int k=0,i,koll[15]={0},j,poten[15]={0},q=0,k2=0,ind,alf[5][33]={0},j2;
float dol[15],max;
string y1,y2,y3,y4;
k=s[0].length();
for(i=1;i<16;i++){
left(i,k);
for(j=0;j<k;j++) if(s[0][j]==s[i][j]) koll[i-1]++;
dol[i-1]=(float)koll[i-1]/k;
if(dol[i-1]>=0.053) {poten[q]=i;q++;}
//cout<<endl<<"Koll="<<koll[i-1];
}
//for(i=0;i<5;i++)
//for(j=0;j<33;j++)
//alf[i][j]=0;
for(i=0;i<15;i++) if(poten[i]!=0) k2++;
max=dol[0];ind=1;
for(i=0;i<15;i++) if(dol[i]>max) {max=dol[i];ind=i+1;}
j=0;
for(i=0;i<201;i++){
//y1[i]=s[0][j];
for(int b=0;b<33;b++)
if(s[0][j]==s2[b]) alf[0][b]++;
j=j+4;
}
j=1;
for(i=201;i<402;i++){
// y2[i]=s[0][j];
for(int b=0;b<33;b++)
if(s[0][j]==s2[b]) alf[1][b]++;
j=j+4;
}
j=2;
for(i=402;i<603;i++){
// y3[i]=s[0][j];
for(int b=0;b<33;b++)
if(s[0][j]==s2[b]) alf[2][b]++;
j=j+4;
}
j=3;
for(i=603;i<803;i++){
//y4[i]=s[0][j];
for(int b=0;b<33;b++)
if(s[0][j]==s2[b]) alf[3][b]++;
j=j+4;
}
for(j2=0;j2<ind;j2++){
cout<<endl;
for(i=0;i<33;i++)
cout<<alf[j2][i]<<" ";
}
//cout<<endl<<ind;
cout<<endl<<endl;
system("pause");
return 0;
}
Пытался делать по индексу совпадений как показано по ссылке
https://ru.wikipedia.org/wiki/%D0%98...BD%D0%B8%D0%B9
Дошел до статистике появлений букв в группах.
Не могу понять как узнать сколько нужно количество сдвигов в каждой группы, чтобы вычислить взаимный индекс совпадений