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); }


Rispondi quotando
