Next: Lecture formattée
Up: Les pointeurs
Previous: Une dernière précision
On va coder un algorithme de cryptage très simple : on choisit un décalage
(par exemple 5), et un a sera remplacé par un f, un b par un g, un c par un h,
etc.
On ne cryptera que les lettres majuscules et minuscules sans toucher ni à la
ponctuation ni à la mise en page (caractères blancs et line feed).
On supposera que les codes des lettres se suivent de a à z et de A à Z.
On demande de :
- 1.
- déclarer un tableau de caractères mess initialisé avec le
message en clair ;
- 2.
- écrire une procédure crypt de cryptage d'un caractère qui
sera passé par adresse ;
- 3.
- écrire le main qui activera crypt sur l'ensemble du
message et imprimera le résultat.
#include <stdio.h>
char mess[] = "Les sanglots longs des violons de l'automne\n\
blessent mon coeur d'une langeur monotone";
#define DECALAGE 5
/*****************************************************************************/
/* */
/* crypt */
/* */
/* But: */
/* Crypte le caractère passé en paramètre */
/* */
/* Interface: */
/* p : pointe le caractère à crypter */
/* */
/*****************************************************************************/
void crypt(char *p)
{
enum {BAS, HAUT};
int casse;
if (*p >= 'a' && *p <= 'z') casse = BAS;
else if (*p >= 'A' && *p <= 'Z') casse = HAUT;
else return;
*p = *p + DECALAGE;
if (casse == BAS && *p > 'z' || casse == HAUT && *p > 'Z') *p = *p -26;
}
/*****************************************************************************/
/* */
/* main */
/* */
/*****************************************************************************/
int main()
{
char *p;
int i;
/* phase de cryptage */
p = &mess[0];
while(*p)
crypt(p++);
/* impression du résultat */
printf("Résultat:\n");
printf(mess);
printf("\n");
}
Bernard Cassagne
1998-12-09