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 :

Crypt Caesar char


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2022
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Crypt Caesar char
    Bonjour, à la suite d'un projet, je souhaite crypter une chaine de caractères. Mais à chaque fois il ne me convertie que les majuscules. Help plz
    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
    #include <stdio.h>
    #include <iostream>
    #include <string>
    using namespace std;
     
    //PRORORYPAGE
    void messCryptCesar(const char *in, char *out, int key);
     
    int main()
    {
      char messageIn[106] = "AZ hello az";
      char messageOut[106];
      messCryptCesar(messageIn,messageOut, 1);
      cout << messageOut << endl; 
     
      return 0;
    }
     
    void messCryptCesar(const char *in, char *out, int key)
    {
      for(int i=0; i < 106; i++)
      {
        //Minuscules
        if((in[i] >= 97) && (in[i] <= 122))
        {
          if(in[i] + key > 122)
          {
            out[i] = 96 + key;
          }
          else{
            out[i] = in[i] + key;
          }
        }
        //Majuscules
        if((in[i] >= 65) && (in[i] <= 90))
        {
          if(in[i] + key > 90)
          {
            out[i] = 64 + key;
          }
          else{
            out[i] = in[i] + key;
          }
        }
        else{
          out[i] = in[i];
        }
      }
    }

  2. #2
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2022
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Re
    Après avoir chercher de mon côté, je n'ai pas trouvé la raison du pourquoi ça ne voulait pas marcher...
    Je suis passé par des string finalement.
    Voilà le résultat avec un return de ma fct.
    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
    #include <stdio.h>
    #include <iostream>
    #include <string>
    using namespace std;
     
    string Cesar(const string in, int key);
     
    int main()
    {
        string r("hello World!");
        string R;
        R = Cesar(r, 3);
        cout << R << endl;
        return 0;
    }
     
    string Cesar(const string in, int key)
    {
        string out;
        out = in;
        for(int i=0;i < in.length();i++)
        {
            //MAJUSCULES
            if(in[i] >= 65 && in[i] <= 90)
            {
                if(in[i] + key > 90)
                {
                    out[i] = 64 + key;
                }
                else{
                    out[i] = in[i] + key;
                }
            }
            //MINUSCULE
            if(in[i] >= 97 && in[i] <= 122)
            {
                if(in[i] + key <=122)
                {
                    out[i] = in[i] + key;
                }
                else{
                    out[i] = key + 96;
                }
            }
        }
        return out;
    }

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 686
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 686
    Points : 30 976
    Points
    30 976
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Valochxx Voir le message
    if(in[i] >= 65 && in[i] <= 90)
    Evite les "nombres magiques" => if (in[i] >= 'a' && in[i] <= 'z').
    Ou mieux, utilise les outils déjà tout faits => if (islower(in[i]))...

    Citation Envoyé par Valochxx Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            {
                if(in[i] + key > 90)
                {
                    out[i] = 64 + key;
                }
                else{
                    out[i] = in[i] + key;
                }
            }
    Tant qu'à faire, essaye aussi de factoriser un peu... => out[i]=(in[i] + key > 'z' ?'a'-1 :in[i]) + key...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/07/2003, 16h24
  2. Char(x) -> chaine concaténée d'espaces ?
    Par rgz dans le forum Débuter
    Réponses: 7
    Dernier message: 27/06/2003, 11h59
  3. [PostgreSql] Problème de cadreage de char !!!
    Par moipastoi dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/05/2003, 18h01
  4. Réponses: 6
    Dernier message: 24/03/2003, 17h11
  5. Traitement d'un char* renvoyé par une DLL en C++
    Par LuluTchab dans le forum Langage
    Réponses: 4
    Dernier message: 22/03/2003, 21h48

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