IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Votre avis sur un petit programme C++ (chiffrement de César)


Sujet :

C++

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Lycéen
    Inscrit en
    Août 2006
    Messages
    3
    Détails du profil
    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2006
    Messages : 3
    Par défaut Votre avis sur un petit programme C++ (chiffrement de César)
    Bonjour à tous,

    Alors voilà je suis grand débutant en C++ et je viens de créer un petit programme refaisant le chiffrement de César.
    Ce chiffrement, qui est tout ce qu'il y a de plus basique, consiste à décaler les lettres de toute une phrase selon leur emplacement dans l'alphabet...

    Ainsi je voudrais savoir de la part de programmeurs plus expérimentés que moi, si ma "façon de coder" est bonne et si je ne prends pas de mauvaises habitudes... (j'ai essayé de faire des efforts en ce qui concerne l'indentation et les remarques... )

    Et puis une petite question, ça ne fait pas trop barbare mon if (à la ligne 79) avec tous les caractères spéciaux??

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    #include <cstdio>
    #include <cstdlib>
    #include <iostream>
    #include <string>
    #define CHAINE_MAXI 1000
    using namespace std;
     
    // définition de l'alphabet :
    const string Alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ";    
     
    string chaineEntree="";    // définition de la phrase d'entrée (celle que l'utilisateur entre...)
    char chaineSortie[CHAINE_MAXI]="";    // définition de la phrase de sortie (celle que l'algo resort...)
    int decalage=0;    // définition de la variable de décalage
    int varAnnuleDecalage=0;  // création d'une variable en cas de dépassement de l'alphabet et qui permet un retour au début de l'alphabet
     
    void toutMajuscule();   // fonction pour mettre la chaine de l'utilisateur en majuscule
    void cryptage();   // fonction de décalage de toutes les lettres de la chaine
     
    int main(int nNumberOfArgs, char* pszArgs[])
    {
    	int continuer=0;
    	do
    	{
    		system("clear");   // on efface l'écran (ATTENTION : "clear" sous Linux et "cls" sous DOS/Windows)
    		cout << "\t/====================================\\" << endl;
    		cout << "\t| Le chiffrement de César  (par nK0) |" << endl;
    		cout << "\t\\====================================/" << endl << endl;  // une 'tite présentation :)
    		chaineEntree="";  // on efface...
    		for(int i=0;i<CHAINE_MAXI;i++) chaineSortie[i]=0;  // idem pour chaineSortie...
    		cout << "Entrez la phrase à coder : ";
    		getline(std::cin, chaineEntree);   // l'utilisateur entre sa phrase (il peut mettre des espaces...)
    		cout << "Entrez le décalage (compris entre 0 et 26) : ";
    		cin >> decalage;   // il entre le décalage voulu
    		cout << endl;
    		toutMajuscule();   // et on met sa chaine en majuscules...
    		if(decalage>=0 && decalage<=26)
    		{
    			cout << "Avec un décalage de " << decalage << " lettres, " << chaineEntree << " donne :" << endl;
    			cryptage();    // et on crypte...
    			cout << "\n\t"<< chaineSortie << endl << endl;
    		}
    		else cout << "Erreur : Entrez un décalage compris entre 0 et 26" << endl << endl;
    		cout << "Voulez-vous recommencer ? (1=oui, 0=non) "; // on demande à l'utilisateur s'il veut recommencer un nouveau codage
    		cin >> continuer;
    		while(getchar() != '\n');
    		cout << endl;
    	} while (continuer==1);  // boucle pour recommencer l'opération
    	return 0;
    }
     
    // fonction pour mettre la chaine de l'utilisateur en majuscule :
    void toutMajuscule()
    {
    	for(int i=0;i<CHAINE_MAXI;i++)
    	{
    		if(chaineEntree[i])
    		{
    			chaineEntree[i]=toupper(chaineEntree[i]);  // on met tous les caractère de la chaine en MAJUSCULES
    		}
    		  // et maintenant on s'occupe des caractère spéciaux du français 
    		if (chaineEntree[i] && chaineEntree[i]=='é') chaineEntree[i]='E';
    		if (chaineEntree[i] && chaineEntree[i]=='ç') chaineEntree[i]='C';
    		if (chaineEntree[i] && chaineEntree[i]=='à') chaineEntree[i]='A';
    		if (chaineEntree[i] && chaineEntree[i]=='ù') chaineEntree[i]='U';
    		if (chaineEntree[i] && chaineEntree[i]=='ë') chaineEntree[i]='E';
    		if (chaineEntree[i] && chaineEntree[i]=='ô') chaineEntree[i]='O';
    		if (!chaineEntree[i]) break;
    	}
    }
     
    // fonction de décalage de toutes les lettres de la chaine :
    void cryptage()
    {
    	for (int i=0;i<CHAINE_MAXI;i++)
    	{
    		if (chaineEntree[i]=='\0') break;
    		for (int j=0;j<26;j++)
    		{
    			if (chaineEntree[i]==',' || chaineEntree[i]=='\'' || chaineEntree[i]=='_' || chaineEntree[i]=='/' || chaineEntree[i]=='\\' || chaineEntree[i]=='0' || chaineEntree[i]=='1' || chaineEntree[i]=='2' || chaineEntree[i]=='3' || chaineEntree[i]=='4' || chaineEntree[i]=='5' || chaineEntree[i]=='6' || chaineEntree[i]=='7' || chaineEntree[i]=='8' || chaineEntree[i]=='9' || chaineEntree[i]=='-' || chaineEntree[i]=='*' || chaineEntree[i]==' ' || chaineEntree[i]=='+' || chaineEntree[i]=='(' || chaineEntree[i]==')' || chaineEntree[i]=='"' || chaineEntree[i]=='&' || chaineEntree[i]=='@' || chaineEntree[i]=='$' || chaineEntree[i]=='.' || chaineEntree[i]=='!' || chaineEntree[i]==':' || chaineEntree[i]==';' || chaineEntree[i]=='?' || chaineEntree[i]=='%' || chaineEntree[i]=='^' || chaineEntree[i]=='"' || chaineEntree[i]=='£' || chaineEntree[i]=='¤')    // liste de tous les caractère à ne pas coder
    			{
    				chaineSortie[i]=chaineEntree[i];
    				break;
    			}
    			else if (chaineEntree[i]==Alphabet[j] && j+decalage<26)
    			{
    				chaineSortie[i]=chaineEntree[i]+decalage;  // on décale normalement si j+decalage<=25
    			}
    			else if (chaineEntree[i]==Alphabet[j] && j+decalage>=26)
    			{
    				varAnnuleDecalage=25-j; // un peu plus spécial si le décalage sort de l'alphabet
    				chaineSortie[i]=Alphabet[decalage-varAnnuleDecalage-1]; // on retourne donc au début de l'alphabet en enlevant les lettres passées à la fin de l'alphabet
    			}
    		}
    	}
    }
    Sinon le code est aussi dispo ici.


    Voilà, merci d'avance pour vos observations...
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. votre avis sur mon programme
    Par warubi dans le forum C++
    Réponses: 6
    Dernier message: 19/02/2007, 09h47
  2. Votre avis sur mon petit site
    Par didou038 dans le forum Mon site
    Réponses: 2
    Dernier message: 24/12/2006, 14h33
  3. [HSQLDB] Votre avis sur un petit exemple complet...
    Par calogerogigante dans le forum Persistance des données
    Réponses: 8
    Dernier message: 16/05/2006, 08h21
  4. [Programmation distribuée] Votre avis sur une archi
    Par Acarp47 dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 7
    Dernier message: 29/06/2005, 14h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo