Witam !
Piszę szyfr PlayFair-a , tylko napotkałem mały problem. Chcę go rozszerzyć o polskie znaki + spacja, aby była tabliczka 6x6. Problem w tym że funkcja która tworzy stringa z którego tworzę później tablicę nie uwzględnia Polskich liter.
PS. Korzystam z linuxa i wszędzie konsola/system/pliki.cpp mam ustawione kodowanie utf-8.
#include <iostream>
#include <string>
#include <stdio.h>
#include <string.h>
using namespace std;
int RemoveDuplicates(char *pStr)
{
if(!pStr || !*pStr)
return 0;
int counts[256] = {0};
int current = 0, next = 0;
while(pStr[current] != '\0')
{
if(++counts[pStr[current]] == 1)
{
pStr[next++] = pStr[current];
}
++current;
}
pStr[next] ='\0';
return next;
}
int main()
{
string alfabet = "aąbcćdeęfghijklłmnńoópqrsśtuvwxyzźż ";
string klucz;
cout<<"Dawaj klucz: ";
cin>>klucz;
string klucz_plus_alf = klucz+alfabet;
int klucz_alf_size = klucz_plus_alf.length();
char str[klucz_alf_size];
strcpy(str, klucz_plus_alf.c_str());
RemoveDuplicates(str);
cout<<str<<endl;
char playfair_grid [6][6];
int k=0;
for(int i=0; i<6; i++)
{
for(int j=0; j<6; j++)
{
playfair_grid[i][j] = str[k];
k++;
}
}
cout<<endl;
cout<<"============== PlayFair grid ============== "<<endl;
for(int i=0; i<6; i++)
{
for(int j=0; j<6; j++)
{
cout<<"| "<<playfair_grid[i][j]<<" |";
}
cout<<endl;
}
return 0;
}