WzzP schrieb:
Danke man, hab das total übersehen!
Von strlen wusst ich gar nix... Naja gut zu wissen,
Problem ist gelöst, geht jetz!
Um mal so zu sagen: Du weisst von einer ganzen Reihe von Dingen nichts, die dein Programm erheblich vereinfachen wuerden. strlen ist hier sogar nur eine Kruecke aus laengst vergangenen C-Zeiten, die dir deine manuelle Zeichenkettenbehandlung etwas einfacher macht. Mit der Art und Weise, wie man Zeichenketten in C++ eigentlich behandelt, haben weder strlen noch dein Code irgendwas zu tun.
So koennte das in (prozeduralem) C++ aussehen (eben fix im Editor programmiert, ungetestet)
string encode(const string& plaintext, const string& key)
{
string result;
for(size_t i = 0; i < plaintext.size(); ++i)
{
result.push_back((plaintext[i] + key[i % key.length()]) % 26 + 'A'); // Ueber die Details der Verschluesselung kann man hier noch verhandeln.
// Ich habe mal ein paar weniger 'A's abgezogen als du.
}
return result;
}
Das ist auch keine Zauberei fuer Fortgeschrittene, sondern wie man als blutiger Anfaenger Zeichenketten in C++ lernen sollte. Du solltest hochgradig skeptisch gegenueber dem Lehrmaterial sein, dass dir ernsthaft new fuer Arrays beigebracht hat (ein nacktes new kommt in C++ so gut wie nie vor!); dir nullterminierte char-Arrays zur Zeichenkettenbehandlung vorschlaegt; dabei die C-Funktionen zur Behandlung von nullterminierten char-Arrays unterschlaegt; std::string nicht erwaehnt; und globale Variablen zur Parameteruebergabe an Funktionen vormacht. Jeder einzelne dieser Punkte ist eine kleine Todsuende in C++, wo immer du das her hast, macht sie alle! Und wahrscheinlich noch viele weitere. Daher solltest du sich schleunigst von diesem Lehrmaterial trennen und dir was vernuenftiges suchen. Guck zum Beispiel in meiner Signatur fuer Buchtipps.