Codice: Seleziona tutto
/*
================ ESERCIZIO 7 ============================================
La codifica crittografica di Cesare consiste nel sostituire ogni carattere
con quello che si trova nella k-esima posizione successiva dell’alfabeto.
Il numero k rappresenta la chiave (0 < k < 26).
Per esempio, con k = 2 : ‘a’ à ‘c’, ‘e’ à ‘g’, ‘z’ à ‘b’.
Per decriptare, basta sostituire ogni carattere con quello
che si trova nella k-esima posizione precedente dell’alfabeto.
Scrivere due programmi.
Il primo accetta in ingresso una stringa
(composta da soli caratteri minuscoli e priva di spazi)
e una chiave k e scrive la versione crittografata della stringa.
Il secondo accetta in ingresso una stringa crittografata
(composta da soli caratteri minuscoli e priva di spazi)
e una chiave k e scrive la versione decriptata della stringa.
Mettere newline in modo che tutto sia leggibile
ed indentare il codice come visto a lezione.
*/
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
//prendere l'imput dall'utente
//frase(frase) e chiave(key_crip)
string frase;
int key_crip;
cout << "inserisci parola da criptare con il metodo di Cesare: ";
cin >> frase;
cout << "\ninserisci il valore della chiave crittografica: ";
cin >> key_crip;
cout << endl;
while (key_crip <= 1 || key_crip >= 26){ //per qualche motivo >= è l'escluso e non compreso
cout << "reinserisci il valore della chiave crittografica: ";
cin >> key_crip;
cout << endl;
}
//generare frase criptata
string crip_frase;
string::iterator it;
char change; //carattere criptato
for (it=frase.begin(); it!=frase.end(); it++){
change = (*it + key_crip);
if ((unsigned int)change > 122) {
change = (int)change - 26;
}
crip_frase= crip_frase + change;
}
//versione criptata su schermo per utente
cout << "la parola criptata è: " << crip_frase << endl;
}
ciao a tutti vi posto questo esercizio prova in programmazione c++ scritto ed eseguito tramite code block (aggiornato all'ultima versione) che da un effetto particolare nella parte di codice:
Codice: Seleziona tutto
while (key_crip <= 1 || key_crip >= 26){ //per qualche motivo >= è l'escluso e non compreso
cout << "reinserisci il valore della chiave crittografica: ";
cin >> key_crip;
cout << endl;
}
non dovrebbe essere al contrario?
lo provereste a compilare e farmi sapere se la stranezza e solo sul mio pc o anche sul vostro?
dubito che sia code block.....ma mi sembra strano!