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.
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.