Partage
  • Partager sur Facebook
  • Partager sur Twitter

[c++] Problème cryptage

Décryptage..... ????

Sujet résolu
    18 janvier 2006 à 16:16:44

    Je sais, je sais vous vous dites...
    Pas encore un gars qui essay de crypter et décrypter un message... >_<


    Mais moi j'ai toujours été passionné des messages secrets.....
    Et bien j'ai fait un "semblant" de crypteur-décrypteur mais quand il y a des espaces dans ma phrase, il ne decrypte que le premier mot.... o_O

    Voici mon code...
    #include <cstdlib>
    #include <iostream>
    #include <stdio.h>

    using namespace std;

    int main(int argc, char *argv[])
    {
          char message[500+1];
          int x = 0;
        cin >>message;
        for(x;x!=10;x++)
          {
            message[x]+=2;
          }
        cout <<message <<endl;
        cout <<"Maintenant le décryptage..." <<endl;
        x=0;
        for (x;x !=10;x++)
         {
           message[x] -= 2;
         }
        cout <<message <<endl;//il n'affiche que le premier mot  o_O
        system("PAUSE");
        return 0;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      18 janvier 2006 à 17:08:07

      Normal :lol: ,
      cin>> ;
      s'arrête dès qu'il y a un espace, essaye avec :
      cin.getline(message, 500);
      ;)
      • Partager sur Facebook
      • Partager sur Twitter
        18 janvier 2006 à 17:42:42

        heu...d'accord mais est ce que tu pourrais m'expliquer parce que la je vois pas quesque sa fait......dsl si chui un gros zér0 :p
        • Partager sur Facebook
        • Partager sur Twitter
          18 janvier 2006 à 18:58:29

          Heu...j'ai lu mais toujours pas compris.....
          • Partager sur Facebook
          • Partager sur Twitter
            18 janvier 2006 à 19:01:29

            En gros cin>> prend pas les espaces, genre si tu fais cin>>texte; et que tu rentre 'Salu ça va?' la variable texte vaudra 'Salu' puisque cin s'arrête dès qu'il y a un espace, alors que cin.get() ou cin.getline(), ou encore gets(), prend toute le texte (même les espaces) donc :
            char buff[256];
            cin>>buff;
            // 'Salu ça va ?'
            // buff vaudra 'Salu'
            cin.get(buff, 255);
            // 'Salu ça va ?'
            // buff vaudra 'Salu ça va ?'


            T'as qu'à essayer je suis sûr que tu comprendras mieux ;)
            • Partager sur Facebook
            • Partager sur Twitter
              18 janvier 2006 à 19:23:51

              Ouai d'accord sa j'avais compris mais les paramètre de la fonction, je doit mettre la variable dans la quelle je met le texte et le deuxième c'est le nombre de caractère???
              • Partager sur Facebook
              • Partager sur Twitter
                18 janvier 2006 à 19:37:27

                Citation : joe005

                Ouai d'accord sa j'avais compris mais les paramètre de la fonction, je doit mettre la variable dans la quelle je met le texte et le deuxième c'est le nombre de caractère???



                Ui je nombre de caractères Max que la variable va prendre ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  18 janvier 2006 à 19:38:06

                  ok merci beaucoup!!!! :D

                  Mais maintenant, mon problème est que il ne crypte qu'un seul mot.... :(
                  encore désolé pour le deuxième topic, je ne connaissais pas le "EDIT" je ne recommencerai plus ^^
                  Quelqu'Un peux m'aider???
                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 janvier 2006 à 21:18:55

                    Citation

                    #include <cstdlib>
                    #include <iostream>
                    #include <stdio.h>

                    using namespace std;

                    int main(int argc, char *argv[])
                    {
                          char message[500+1];
                          int x = 0;
                        cin.getline(message,500);
                        for(x;x!=10;x++)
                          {
                            message[x]+=2;
                          }
                        cout <<message <<endl;
                        cout <<"Maintenant le décryptage..." <<endl;
                        x=0;
                        for (x;x !=10;x++)
                         {
                           message[x] -= 2;
                         }
                        cout <<message <<endl;
                        system("PAUSE");
                        return 0;
                    }


                    Deja soit tu fais :
                    #include <cstdio>
                    #include <cstdlib>

                    soit :
                    #include <stdio.h>
                    #include <stdlib.h>

                    mais pas :
                    #include <stdio.h>
                    #include <cstdlib>


                    C'est pas que ça marche pas mais bon ça le fait pas quoi :p

                    Puis le stdio et stdlib te servent à rien sur ton bout de code donc :
                    #include <iostream>

                    suffira ;)

                    et pour ton problème, ça ne crypte pas un seul mot mais seulement 11 caractères, hé oui sur ton for(); x!=10 à remplacer par x!= strlen(message);
                    donc le code final donnerait :

                    #include <iostream>

                    using namespace std;

                    int main(int argc, char *argv[])
                    {
                            char message[512];
                            int x = 0;

                            cin.getline(message, 511);
                            int len = strlen(message);

                            for (x; x != len; x++) {
                                    message[x] += 2;
                            }
                            cout << "\n " << message << endl;
                            cout << "\n Maintenant le décryptage..." << endl;
                            x = 0;
                            for (x; x != len; x++) {
                                    message[x] -= 2;
                            }
                            cout << "\n " << message;
                            getchar();
                            return 0;
                    }
                                   
                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 janvier 2006 à 21:24:48

                      Heu...Merci beaucoup ddx39, tu dois etre tanné de me repondre :p mais C'est bien beau savoir quoi metter mais moi j,aime comprendre, est ce que tu peux m'expliquer le "strlen(message)" SVP
                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 janvier 2006 à 21:37:28

                        Citation : joe005

                        Heu...Merci beaucoup ddx39, tu dois etre tanné de me repondre :p mais C'est bien beau savoir quoi metter mais moi j,aime comprendre, est ce que tu peux m'expliquer le "strlen(message)" SVP



                        strlen(message); c'est le nombre de caracteres qu'il y a dans la variable message ;) (php c'est un vilain voleur de fonctions ^^ )
                        • Partager sur Facebook
                        • Partager sur Twitter
                          18 janvier 2006 à 21:44:09

                          Ok merci de l'info!!!! Tou marche maintenant, un gros merci special a ddx39 et a pacool!!!!!
                          Seul chose, alors a quoi servent <stdio> et <stdlib>????
                          [EDIT] je veux dire, ils proposent quelles fonctions???
                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 janvier 2006 à 21:47:18

                            strlen(message); retourne un int contenant le nombre de caractères de la variable char ;)
                            Exemple :
                            char buff[256] = "plop";

                            int capacity = sizeof(buff), contenu = strlen(buff);

                            /* ici capacity vaudra 256 et contenu 5, c.a.d 'plop\0' ou plop + le \0 si tu préfère */
                            • Partager sur Facebook
                            • Partager sur Twitter
                              18 janvier 2006 à 21:48:27

                              Ok merci masi pour <stdio> et <stdlib> vous avez des reponses???
                              • Partager sur Facebook
                              • Partager sur Twitter
                                18 janvier 2006 à 21:54:58

                                printf(); et scanf(); par exemple et pleins d'autres que je ne connais pas ;)
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  18 janvier 2006 à 21:59:36

                                  Ok, une dernière chose, je le jure!!!!! :p Et après j'arrette de vous embêter, avec un pointeur, serait-il possible d'allouer une espace dinamique a message du genre:
                                  #include <iostream>


                                  using namespace std;

                                  int main(int argc, char *argv[])
                                  {
                                        int *p = NULL;
                                        char message[*p+1];
                                        int x = 0;
                                      cin.getline(message,*p);
                                      *p = strlen(message); //ICI!!!!
                                      int len = strlen(message);
                                      for(x;x!=len;x++)
                                        {
                                          message[x]+=2;
                                        }
                                      cout <<message <<endl;
                                      cout <<"Maintenant le décryptage..." <<endl;
                                      x=0;
                                      for (x;x !=len;x++)
                                       {
                                         message[x] -= 2;
                                       }
                                      cout <<message <<endl;
                                      system("PAUSE");
                                      return 0;
                                  }

                                  Merci beaucoup ^^:D
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    18 janvier 2006 à 22:00:38

                                    ben ouvre stdio.h et stdlib.h et regarde les fonctions...
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      18 janvier 2006 à 22:03:47

                                      ouai c'est ça que je voulais faire...:D
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        18 janvier 2006 à 22:07:52

                                        Citation

                                        avec un pointeur, serait-il possible d'allouer une espace dinamique a message du genre:



                                        Pourquoi se compliquer la vie alors qu'on peut faire simple ? :p
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          18 janvier 2006 à 22:12:26

                                          Ouai mais sa permettrait d'empecher de mettre une limite de caractères dans message.....non???
                                          [EDIT]Bha j'ai essayer et ya vraiment trop d'erreurs alors je laisse tomber....;)
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            18 janvier 2006 à 23:00:29

                                            Pour cela il faudrais faire :
                                            char *message = new char[1024];

                                            /* Ce qui a une limite quand-même donc en gros ça sert à rien ^^ */
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              18 janvier 2006 à 23:05:32

                                              Va, va entrer 1024 caractères.
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                19 janvier 2006 à 1:00:25

                                                ouai j'avoue........ce n'est pas tres utile masi pour des texte, si je veux plus tard pouvoir lire dans un fichier, le crypter et ensuite pouvoir le decrypter, mais sa ne s fera pas comme sa, j'ai deja une idee du code
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  19 janvier 2006 à 2:53:06

                                                  aussi il y a gets(nom_de_la_variable_); et tu peux utuliser des espaces
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    19 janvier 2006 à 7:08:59

                                                    gets est à bannir, utilisez fgets.
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      19 janvier 2006 à 15:33:21

                                                      Citation

                                                      si je veux plus tard pouvoir lire dans un fichier, le crypter et ensuite pouvoir le decrypter, mais sa ne s fera pas comme sa, j'ai deja une idee du code



                                                      http://www.siteduzero.com/forum-83-5521-47071-c-crypteur-decrypteur.html#r47071
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

                                                      [c++] Problème cryptage

                                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                      • Editeur
                                                      • Markdown