1

Vignère 暗号をプログラムしようとしていますが、暗号化されたテキストに問題があります。文字列を体系化する関数を実行しましたが、うまくできたと思います (Eclipse でデバッグしました) が、cout を使用して画面に表示しようとしても何も表示されません。これは私のコードです:

#include<iostream>
#include<string>
using namespace std;

const int MAX = 26;
typedef char TCuadrado[MAX][MAX];

void CuadradoVigenre(TCuadrado& cuadrado);
string CifrarMensaje(const TCuadrado& cuadrado, string clave, string texto);

int main(){
    TCuadrado cuadrado;
    CuadradoVigenre(cuadrado);
    for (int i = 0; i < MAX; i++){
        for(int j = 0; j < MAX; j++){
            cout << cuadrado[i][j];
        }
        cout << endl;
    }
    string res = CifrarMensaje(cuadrado, "VIGNERE", "CODIGO POLIALFABETICO");
    cout << res;
    return 0;
}


void CuadradoVigenre(TCuadrado& cuadrado){
    int letra = 0;
    for (int i = 0; i < MAX; i++){
        for(int j = 0; j < MAX; j++){
            cuadrado[i][j] = (char) letra + (int) 'A';
            letra++;
            if(letra > 25)
                letra = 0;
        }
        letra = i+1;
    }
}

string CifrarMensaje(const TCuadrado& cuadrado, string clave, string texto){
    string res = "";
    string nuevoConClave;
    int textoSize = texto.size();
    unsigned counterClave = 0;
    for (int i = 0; i < textoSize; i++){
        if(texto[i] != ' '){
            nuevoConClave[i] = clave[counterClave];
            counterClave++;
        }else{
            nuevoConClave[i] = ' ';
        }
        if(counterClave == clave.size())
            counterClave = 0;
    }

    for (int i = 0; i < textoSize;i++){
        if(texto[i] != ' ')
            res[i] = cuadrado[(int) nuevoConClave[i] - (int) 'A'][(int) texto[i] - (int) 'A'];
    }
    return res;
}
4

2 に答える 2

0

修理 :

res+= cuadrado[(int) nuevoConClave[i] - (int) 'A'][(int) texto[i] - (int) 'A'];

于 2013-08-03T11:57:07.263 に答える