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