Salve, stavo cercando di creare un semplice cifrario di Cesare (premetto che sono un novellino in C) e, cercando qualcosa sul web, vidi un post su questo sito risalente al 2015 (
https://www.iprogrammatori.it/forum-programmazione/cplusplus/cifrario-cesare-t25756.html), copiai il codice e provai a farlo partire, notai però che mi dava un errore insolito, allora trovai un carattere "invisibile" all'interno del codice che faceva crashare l'intero programma; lo tolsi e misi anche un'istruzione if e un while cosicché, qualora l'utente avesse inserito un numero maggiore di 26 o minore di 0 nella selezione di quante cifre saltare, il programma glielo avrebbe impedito. Voglio quindi condividere con voi la versione "migliorata":
#include "stdafx.h" //solo se si usa Microsoft Visual Studio
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void cesare(char s, int salto)
{
char alfabeto[26] = { 'a', 'b', 'c', 'd' ,'e' ,'f' ,'g' ,'h' ,'i' ,'j' ,'k' ,'l' ,'m' ,'n', 'o', 'p' ,'q', 'r', 's' ,'t' ,'u' ,'v' ,'w' ,'x' ,'y' ,'z' };
int i;
for (i = 0; i<26; i++)
{
if (s == alfabeto[i])
{
printf("%c", alfabeto[i + salto]);
break;
}
}
}
//main
int main()
{
char cript[100];
int S, lung, i;
printf("Inserisci la parola da criptare > ");
scanf("%s", cript); //se si usa Microsoft Visual Studio bisogna andare su Progetto >> Proprietà di *nome progetto* >> C/C++ >> Avanzate >> Disabilita errori specifici >> inserire 4996
printf("Inserisci il salto da eseguire > ");
scanf("%d", &S);
if (S > 26 || S < 0)
{
while (S > 26 || S < 0)
{
printf("Inserisci il salto da eseguire > ");
scanf("%d", &S);
}
}
lung = strlen(cript);
for (i = 0; i<lung; i++)
{
cesare(cript[i], S);
}
printf("\n");
system("PAUSE");
return 0;
}
Ditemi cosa ne pensate