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 :

Code César : déchiffrage des minuscules


Sujet :

C

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Par défaut Code César : déchiffrage des minuscules
    Bonjour,

    Le programme marche très bien sauf dans le cas déchiffrage des minuscules.

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    void cesar_crypt (int decallage, char *texte)
    {
        /* Explication de la conversion pour un caractere minuscule
     
            texte[i] - 'a'                           -> on recupere un nombre represantante le caractere contenue
                                                        dans texte[i] (0=a, 1=b, ...)
            (texte[i] - 'a') + decallage             -> on lui applique le decallage
            ((texte[i] - 'a') + decallage)%26        -> on fait %26 pour revenir au debut si on a depasser 'z'
            'a' + ((texte[i] - 'a') + decallage)%26  -> on retrouve le bon caractere en ajoutant 'a'
        */
     
     
     
        int i;
        for(i=0 ; i<strlen(texte) ; i++)
            /* Si le caractere est une minuscule */
            if ('a' <= texte[i] && texte[i] <= 'z')
                texte[i] = 'a' + ((texte[i] - 'a') + decallage)%26;
            else
                /* Si le caractere est une majuscule */
                if ('A' <= texte[i] && texte[i] <= 'Z')
                    texte[i] = 'A' + ((texte[i] - 'A') + decallage)%26;
     
     
    }
    void cesar_decrypt (int decallage, char *texte)
    {
        /* Explication de la conversion pour un caractere minuscule
     
            texte[i] - 'a'                           -> on recupere un nombre represantante le caractere contenue
                                                        dans texte[i] (0=a, 1=b, ...)
            (texte[i] - 'a') - decallage             -> on lui applique le decallage
            ((texte[i] - 'a') - decallage)%26        -> on fait %26 pour revenir au debut si on a depasser 'z'
            'a' + ((texte[i] - 'a') - decallage)%26  -> on retrouve le bon caractere en ajoutant 'a'
        */
     
     
     
        int i;
        for(i=0 ; i<strlen(texte) ; i++)
            /* Si le caractere est une minuscule */
            if ('a' <= texte[i] && texte[i] <= 'z')
                texte [i] ='a' + (((texte[i]-'a')-decallage)%26);
            else
                /* Si le caractere est une majuscule */
                if ('A' <= texte[i] && texte[i] <= 'Z')
                    texte[i] = 'A' + ((texte[i] + 'A') - decallage)%26;
     
     
    }
     
     
    int main()
    {
        char Test[1000];
        int n;
        puts("donner votre texte");
        gets(Test);
        puts("donner votre code");
        scanf("%d",&n);
        cesar_crypt(n, Test);
     
     
        printf(" votre cryptage est:%s\n", Test);
     
        cesar_decrypt(n,Test);
     
        printf("votre decryptage est:%s\n", Test);
     
        return EXIT_SUCCESS;
    }
    Pouvez-vous m'aider ?
    Merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    ll semble y avoir un problème dans le déchiffrage des majuscules, ligne 52 il faut un '-' à la place d'un '+'.
    Et il faut éviter les modulos négatifs, cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        for(i=0 ; i<strlen(texte) ; i++)
            /* Si le caractere est une minuscule */
            if ('a' <= texte[i] && texte[i] <= 'z')
                texte [i] ='a' + (((texte[i]-'a') + 26-decallage)%26);
            else
                /* Si le caractere est une majuscule */
                if ('A' <= texte[i] && texte[i] <= 'Z')
                    texte[i] = 'A' + ((texte[i] - 'A') + 26-decallage)%26;

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Par défaut
    Merci beaucoup sa marche trés bien

  4. #4
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Citation Envoyé par lamia kzl Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        printf(" votre cryptage est:%s\n", Test);
    gniiiii..

    chiffrement / message chiffré

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

Discussions similaires

  1. Besoin de conseils pour être respecté et bien parler dans les forums informatiques
    Par waterreedshimmer dans le forum La taverne du Club : Humour et divers
    Réponses: 30
    Dernier message: 02/11/2018, 14h53
  2. [MySQL] pas d'erreur mais l'insertion dans la base ne marche pas bien
    Par info_sara dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/05/2008, 14h55
  3. La sérialisation ne marche pas tres bien
    Par bassim dans le forum Général Java
    Réponses: 7
    Dernier message: 07/01/2008, 17h40
  4. [Débutant][JList] Comment ça marche dans mon cas ?
    Par Invité dans le forum Composants
    Réponses: 31
    Dernier message: 28/06/2004, 10h45
  5. Réponses: 4
    Dernier message: 23/10/2003, 08h03

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