PDA

View Full Version : [C++] Vigenere con alfabeto italiano


corsefi
13-09-2011, 15:23
salve a tutti... :help:
ho scritto un programma per implementare il cifrario di vigenere usando l'alfabeto italiano. tutto sembra funzionare perfettamente, o almeno quasi tutto. nel programma ho definito una funzione in questo modo

string encode(string text){
string line;
char ALPH[21] = {'A','B','C','D','E','F','G','H','I','L','M','N','O','P','Q','R','S','T','U','V','Z'};
text = StringToUpper(text);
if(!text.empty()){
text = EraseChar(text);
}

cout << "String text: " << text << endl;

int index_k[key.length()]; //array degli indici della chiave
for(int i = 0; i < key.length(); i++){
for(int j = 0; j < 21; j++){
if(key[i] == ALPH[j])
index_k[i] = j;
}
cout << "Indice chiave " << i << ": " << index_k[i] << endl;
}

int index_t[text.length()]; //array degli indici del testo
for(int i = 0; i < text.length(); i++){
for(int j = 0; j < 21; j++){
if(text[i] == ALPH[j])
index_t[i] = j;
}
cout << "Indice testo " << i << ": " << index_t[i] << endl;
}

//calcola la lettera codificata
for(int i = 0; i < text.length(); i++){
line[i] = ALPH[(index_k[i%key.length()] + index_t[i])%21];
cout << "Lettera codificata " << i << ": " << line[i] << endl;
}

return line;
}


quando la richiamo nella funzione main

string testo;
cout << "Inserire testo\n";
cin >> testo;

string cifrato = cipher.encode(testo);

cout << "Testo codificato: " << cifrato << endl;

non mi compare nulla in output. come posso fare per risolvere il problema?
eppure tramite i debug prints che ho inserito all'interno della definizione della funzione, si puņ verificare chiaramente che la funzione svolge correttamente tutte le operazione che dovrebbe fare.

banryu79
14-09-2011, 10:55
Hai allocato la memoria per la tua string line, dentro la tua funzione 'encode'?