Метод Виженера - исправить код - C (СИ)
Формулировка задачи:
Помогите исправить ошибку в коде.
#include "stdio.h"
#include "conio.h"
#include "clocale"
#include "string.h"
int const Kol=24;
char X[Kol]="abcdefghiklmnopqrstvxyz";
char Buf[Kol][Kol]={NULL};
int i=0,j=0,K,N;
void Table()
{
for(i=0;i<Kol;i++)
{
for(j=0;j<Kol;j++)
{
K=i+j;
if(K>=Kol) K=K-Kol;
if((i!=0&&K==0)||(i>=2&&K==1)||(i>=3&&K==2)||(i>=4&&K==3)||(i>=5&&K==4)||(i>=6&&K==5)||(i>=7&&K==6)||(i>=8&&K==7)||(i>=9&&K==8)||(i>=10&&K==9)||(i>=11&&K==10)||(i>=12&&K==11)||(i>=13&&K==12)||(i>=14&&K==13)||(i>=15&&K==14)||(i>=16&&K==15)||(i>=17&&K==16)||(i>=18&&K==17)||(i>=19&&K==18)||(i>=20&&K==19)||(i>=21&&K==20)||(i>=22&&K==21)||(i>=23&&K==22)) Buf[i][j-1]=X[K];
else Buf[i][j]=X[K];
}
}
/*for(i=0;i<Kol;i++)
{
for(j=0;j<Kol;j++)
{
printf("%c",Buf[i][j]);
}
printf("\n");
}*/
}
void main()
{
setlocale(LC_ALL,"Russian");
Table();
char Hf[100]={NULL}, Ob[100]={NULL}, Key[4]={NULL};
printf ("Ведите ключевое слово ");
for(i=0;i<3;i++)
{
scanf("%c",&Key[i]);
}
printf ("Введите текст ");
for(i=0;i<6;i++)
{
scanf("%c",&Hf);
}
int G,M_Hf, M_Key,p=0,p1=0;
for(G=0; G<strlen(Hf);G++)
{
i=0; j=0;
while(i!=Kol)
{
if(Buf[0][i]==Hf[p]) {M_Hf=i; p++;}
else i++;
}
if(p1>strlen(Key)) p1=0;
while(j!=Kol)
{
if(Buf[i][0]==Key[p1]) {M_Key=j;p1++;}
else j++;
}
Ob[G]=Buf[M_Hf][M_Key];
}
getch();
}Решение задачи: «Метод Виженера - исправить код»
textual
Листинг программы
Парта - начальное значение Парта _бс_б __т__ Пбттб - исходное значение