Witam
Ostatnio przerzucam się na C++ (w Visual Studio) i teraz staram się napisać aplikację do szyfrowania. Mam problem z szyfrem Bacona a dokładnie z jego deszyfracją. Krótko mówiąc polega on na zamianie konkretnych liter w ciągi złożone z 'a' i 'b' np. "a" -> "aaaaa", "b" -> "aaaab" itp. Znaki poza literami pozostają nie zmienione.
O ile szyfrowanie poszło mi dość dobrze to mam problem jak to odczytać. Moja koncepcja, aby sprawdzać 5 znaków z wszystkimi możliwymi kombinacjami oznaczającymi litery nie chce działać. Kompiluje się, ale nawet próba odszyfrowania "aaaaa" wyrzuca komunikat błędu, który [jak mi się wydaje] mówi o przekroczeniu tablicy.
Fragment kodu, który za to odpowiada (na razie tylko litery a i b oraz inne znaki uwzględniłem - chciałem switch'em ale nie obsługuje string'ów):
{
richTextBox1->Text = ""; //czyszczenie miejsca zapisania rozszyfrowanego kodu
System::String^ tekscik = richTextBox2->Text;
int dl = tekscik->Length;
System::String^ frag;
for (int i=0; i<dl;)
{
frag = tekscik->Substring(i, 5);
if (frag == "aaaaa") {richTextBox1->Text += "a"; i=i+5;}
if (frag == "aaaab") {richTextBox1->Text += "b"; i=i+5;} else {richTextBox1->Text += tekscik[i].ToString(); i=i+1;}
}
}