Witam! Mam program, którego zadaniem jest szyfrowanie podanego przez użytkownika ciągu znaków. Niestety nie działa to dobrze np po podaniu ABCD powinnam otrzymać GBCE a dostaję GBCDD.
#include <iostream>
#include <string>
using namespace std;
string GaDeRy( string s, string szyfr ) {
int i, j;
for( i = 0; i < s.size(); i++ ) {
for( j = 0; j < szyfr.size(); j++ ) {
if( s[ i ] == szyfr[ j ] && j % 2 == 0 ) {
s[ i ] = szyfr[ j + 1 ];
}
if( s[ i ] == szyfr[ j ] && j % 2 != 0 ) {
s[ i ] = szyfr[ j - 1 ];
}
else
s[ i ] = s[ i ];
}
}
return s;
}
int main( int argc, char ** argv ) {
string s, w;
string szyfr( "GADERYPOLUKIgaderypoluki" );
int inst;
cout << "Podaj ciąg znaków, który ma zostać zaszyfrowany: " << "\n";
cin >> s;
cout << "Wybierz rodzaj szyfru: " << "\n"
<< "[1]GA-DE-RY-PO-LU-KI" << "\n"
<< "[2]PO-LI-TY-KA-RE-NU" << "\n"
<< "[3]KA-CE-MI-NU-TO-WY" << "\n";
while( cin >> inst ) {
switch( inst ) {
case 1:
GaDeRy( s, szyfr );
cout << "Wynik: " << "\n";
cout << GaDeRy( s, szyfr );
break;
case 2:
break;
case 3:
break;
}
}
return 0;
}