Buonsera, ho un problemino con il seguente programma (solito prog di allenamento per l'uni)
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.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
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...
Sono graditi suggerimenti e non soluzioni direttecodice:#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"); }![]()
![]()
Grazie a tutti per l'attenzione![]()

Rispondi quotando