Szyfr GA-DE-RY-PO-LU-KI

0

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;
}
1

s[ i ] = szyfr[ j + 1 ];, s[ i ] = szyfr[ j - 1 ]; - wyjście poza zakres tablicy szyfr.
No i s[ i ] = s[ i ]; nie ma sensu, podobnie jak wywoływanie GaDeRy( s, szyfr );, skoro nie wypisujesz wyniku.

1

jak już korzystasz z std::string to trzeba korzystać z jego funkcjonalności:

string GaDeRy(string s, const string &szyfr) {
    assert(szyfr.size()%2==0);

    for(int i = 0; i < s.size(); i++ ) {
        size_t j = szyfr.find(s[i]);
        if (string::npos!=j) {
              s[i] = szyfr[j^1];
        }
    }
    return s;
}

http://ideone.com/uQNJf2

0

jak to odpalic zeby dzialalo bo nie mam zielonego pojecia oprogramowaniu,,... wkleic w bloc de notas i zapisac jako exe, bat czy jar nie wiem co zrobic chcialem sprobowac

0

To zacznij od przeczytania czegokolwiek na temat podstaw programowania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1