Buonsera, ho un problemino con il seguente programma (solito prog di allenamento per l'uni)
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’ diventa ‘c’, ‘e’ diventa ‘g’, ‘z’ diventa ‘b’. Scrivere un programma che: - Accetti in ingresso una stringa (composta da soli caratteri minuscoli e priva di spazi) e una chiave k (numero intero) - Scriva la versione crittografata della stringa Esempio. Inserire k: 2 Inserire una stringa: ciao Stringa crittografata con k=2: ekcq Inserire k: 4 Inserire una stringa: ciao Stringa crittografata con k=4: gmes
Bene, il programma cosi come è l'ho fatta e sembra funzionare correttamente, però mi voglio complicare poco poco la vita facendo in modo che se venga inserita una 'Z' si ritorni ad 'A' e non passi a simboli con codifica ascii incrementati di K rispetto a Z.
Quindi io voglio che se inserisco una parola e si arrivi a Z con gli incrementi di K, la lettera della parola faccia il "giro" e non vada avanti per simboli ASCII
Avevo provato a fare ciò ma sembri che il programma non entri nel ciclo While...
codice:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
char parola[30];
int k,d;
int i=0;
//Putting char by char into an array
printf("Inserire parola: ");
scanf("%s",parola);
printf("\n");
//Choosing of K
printf("Inserire il valore K: ");
scanf("%d",&k);
//Codified word
for(d=0; parola[d]!='\0'; d++)
{
while(i<k);
{
if(parola[d]=='z')
parola[d]='a';
else
parola[d]=parola[d]+1;
i++;
}
}
//Showing trasformed word
printf("%s\n",parola);
system("pause");
}
Sono graditi suggerimenti e non soluzioni dirette
Grazie a tutti per l'attenzione