- 1,471
- 686
- CPU
- Intel Core i5-8400
- HDD
- SSD 240GB, HDD 1TB
- RAM
- 8GB DDR4
- GPU
- NVIDIA GeForce GTX 1050Ti
- OS
- Windows 7 Professional
Ciao a tutti, sto provando a creare un programma che cifri un testo utilizzando il cifrario di Cesare, quindi che sposti di n lettere in avanti ogni carattere del testo, per esempio "CIAO" cifrandolo con chiave 1 diventa "DJBP". Stò però avendo dei problemi con dei cicli for che dovrebbero controllare carattere per carattere il testo di input, quindi se un carattere è una lettera spostarla in avanti di n caratteri (n è la variabile c), mentre se è qualcosaltro deve ignorarlo e passare avanti. Il problema è che alla fine il programma restituisce qualcosa di totalmente insensato. Secondo voi cosa potrei aver sbagliato?
Vi allego il codice nel messaggio, grazie mille in anticipo.
Vi allego il codice nel messaggio, grazie mille in anticipo.
C++:
#include <iostream>
#include <cstring>
using namespace std;
int main(){
string lettere = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ";
int c = 0, o = 0;
string frase = "";
cout<<"Inserire la frase: ";
getline(cin, frase);
int l = frase.length();
cout<<"Seleziona l'operazione da fare:\n1.Cripta\n2.Decripta\n";
cin>>o;
if(o==1){//cripta
cout<<"Inserire la chiave (Da 1 a 25): ";
cin>>c;
//questi sono i for che danno problemi
for (int i = 0; i<l; i++){
for (int j=0; j<25; j++){
if(frase[i]==lettere[j]){
frase[i]=lettere[j+c];
}
}
}
cout<<frase;
}else if(o==2){//decripta
}else{
}
return 0;
}