Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUMS C FAQs C TUTORIELS C LIVRES C COMPILATEURS C SOURCES GTK+
next up previous contents index
Next: Lecture formattée Up: Les pointeurs Previous: Une dernière précision

Exercice

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
Responsable bénévole de la rubrique C : Arnaud Feltz (buchs) - Contacter par EMail :
Vos questions techniques : forum d'entraide C - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.