Salve a tutti, stavo creando una funzione per un cifrario di cesare con chiave scelta dall'utente, in un range 0-26. Per vedere se funzionava ho inserito tutto l'alfabeto, e funziona bene tranne per le ultime 5 lettere (vwxyz). Qualcuno sa dirmi il perchè?
Questa è la funzione:
codice:
void cifrarioPersonalizzato(){
char stringa[DIM_STR];
int i, chiave;
// Acquisizione chiave
printf("# Inserisci la chiave (0-26).\n");
printf("Chiave: ");
scanf("%d", &chiave);
while(chiave<0 || chiave>26){
printf("Chiave errata.\nValore minimo: 0, valore massimo: 26.\n");
printf("Chiave: ");
scanf("%d", &chiave);
}
// Acquisizione stringa
printf("\n# Inserisci la frase.\n");
printf("MAX 150 caratteri, NO maiuscolo.\n");
printf("Frase: ");
fflush(stdin);
gets(stringa);
// Cifratura
for(i=0; i<strlen(stringa); i++){
if(stringa[i]>='a' && stringa[i]<='z'){
stringa[i]=stringa[i]+chiave;
// Se supera la z deve ricominciare dalla a
// Quindi tolgo 26 (alfabeto di 26 lettere)
if(stringa[i]>'z')
stringa[i]=stringa[i]-26;
}
}
printf("\nLa frase criptata e': %s\n\n", stringa);
}