Partage
  • Partager sur Facebook
  • Partager sur Twitter

Faire son Code Secret

J'ai besoin d'aide pr un projet tres sympa

    10 novembre 2007 à 15:37:12

    Salut a tous ! :D

    J'essaye de crée un projet sympa ,
    je suis en train d'appendre le language C
    et j'aime bien faire de petite aplication marrante :p ..
    Mais j'ai un projet(pourtant simple) que je n'arrive pas a faire ! :euh:
    j'essaye de faire une aplication(avec l'executeur je c'ets faire que sa pr l'instant :lol: )
    J'aimerais que quand je marque par example : " bonjour " l'ordinateur met le met en code secret que j'ai inventé par example ce code secret :
    B = 1
    O = 2
    N = 3
    J = 4
    O = 5
    U = 6
    R = 7
    bien sur quand je vais fabriqué cette aplication je mettrai les code secret pour toutes les lettres !
    voila alors j'aimerais que l'ordi me sorte 1234567 quand je veut dire "bonjour" :D
    J'avais pensé que ce chapitre( Ce Lien )</lien>pourrait m'aidé mais en faite pas trop :(
    Alors j'en appel a tout le monde pour m'aidé svp !
    je vous serait tres reconnaissant !
    • Partager sur Facebook
    • Partager sur Twitter
      10 novembre 2007 à 15:51:26

      tu enregistre chaque caractère entré a part, et tu fait %ld au lieu de %c dans le printf.
      Du coup, tu n'écris pas le caractère, mais la valeur correspondante.
      Car il faut savoir qu'en mémoire, quand tu inscrit un caractère, c'est un nombre qui est enregistré. mais vu que tu indique que tu veut afficher un caractère avec %c, la fonction printf t'affichera le caractère correpondant a la valeur trouvée dans ta variable.
      • Partager sur Facebook
      • Partager sur Twitter
        10 novembre 2007 à 17:14:33

        voila , je viens de faire ces lignes, sa marche mais pas exactement comme je voulais , quand je veut savoir le code de A par example sa me met 1 donc la tout va bien mais si je veux dire ABC l'ordi ne me di pas 123 ... :(
        voila mes lignes de code :

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

        int main(int argc, char *argv[])
        {
        long codeSecret;

        printf("1.A\n");
        printf("2.B\n");
        printf("3.c\n");
        printf("4.D\n");
        printf("5.E\n");
        printf("6.F\n");
        printf("7.G\n");
        printf("8.H\n");
        printf("9.I\n");
        printf("10.J\n");
        printf("11.K\n");
        printf("12.L\n");
        printf("13.M\n");
        printf("14.N\n");
        printf("15.O\n");
        printf("16.P\n");
        printf("17.Q\n");
        printf("18.R\n");
        printf("19.S\n");
        printf("20.T\n");
        printf("21.U\n");
        printf("22.V\n");
        printf("23.W\n");
        printf("24.X\n");
        printf("25.Y\n");
        printf("26.Z\n");
        printf("\n\n");
        printf("Ecris ce que tu a as encoder\n");
        printf("\n");
        scanf("%ld", &codeSecret);
        printf("\n");

        switch (codeSecret)
        {
        case 1:
        printf("1");
        break;
        case 2:
        printf("2");
        break;
        case 3:
        printf("3");
        break;
        case 4:
        printf("4");
        break;
        case 5:
        printf("5");
        break;
        case 6:
        printf("6");
        break;
        case 7:
        printf("7");
        break;
        case 8:
        printf("8");
        break;
        case 9:
        printf("9");
        break;
        case 10:
        printf("10");
        break;
        case 11:
        printf("11");
        break;
        case 12:
        printf("12");
        break;
        case 13:
        printf("13");
        break;
        case 14:
        printf("14");
        break;
        case 15:
        printf("15");
        break;
        case 16:
        printf("16");
        break;
        case 17:
        printf("17");
        break;
        case 18:
        printf("18");
        break;
        case 19:
        printf("19");
        break;
        case 20:
        printf("20");
        break;
        case 21:
        printf("21");
        break;
        case 22:
        printf("22");
        break;
        case 23:
        printf("23");
        break;
        case 24:
        printf("24");
        break;
        case 25:
        printf("25");
        break;
        case 26:
        printf("26");
        break;
        default:
        printf(" mauvais choix");
        break;

        }

        printf("\n\n");

        system("PAUSE");
        }

        • Partager sur Facebook
        • Partager sur Twitter
          10 novembre 2007 à 17:35:07

          Base-toi sur ce code :
          1. int main(int argc,char **argv)
          2. {
          3.     int i = 0;
          4.     char mot[30] = "hello world !";
          5.     //On parcours la chaîne
          6.     for(i = 0 ; i < 30 ; i ++)
          7.     {
          8.         //Si le caractère vaut 0 ( donc rien) on quitte la boucle
          9.         if(mot[i] == 0)
          10.         {
          11.             break;
          12.         }
          13.         /*On écrit le numéro correspondant ( %ld) remarque, si on aurait voulu écrire le caractère, on aurait mit %c.*/
          14.         printf("%ld", mot[i]);
          15.     }
          16.     return EXIT_SUCCESS;
          17. }
          • Partager sur Facebook
          • Partager sur Twitter
            10 novembre 2007 à 17:35:50

            balise code s'il vous plait.
            1. <code type="c">/*Code ici*/</*code>
            sans le *

            Enuite, rajoute un return 0; à la fin de ton main.

            Pour ton code, tu dois enregistrer chaque caractère un par un et faire une boucle.

            1. while ((codeSecret = getchar) != '\n'

            Ensuite, A et a sont différent.
            Et A ne vaut pas 1 mais bien 65.
            Et a vaut 97.
            Pour le savoir, comme il a été dit:
            1. char caractere=0;
            2. scanf("%c",&caractere);
            3. printf("%d\n", caractere);

            Et magie, le code de la lettre apparait.

            Bonne continuation.

            <édit grilled>
            • Partager sur Facebook
            • Partager sur Twitter
              10 novembre 2007 à 17:45:13

              Merci pour vos reponse , je vais médité longuement dessus car j'ai beaucou de mal a comprendre ce que vous m'avez dit :lol:
              Apparament il me manque pas mal de chose a assimilé :)
              Je vais tout de suite me plongé dans mes ligne et vous montré enfin une ligne de code parfaite !(en tout cas qui marche ...sa me suffira :lol:)
              • Partager sur Facebook
              • Partager sur Twitter
                10 novembre 2007 à 17:45:38

                Salut,

                jet vais essayer de te donner quelques conseils pour ton projet:
                • Tout d'abord je te conseille d'utiliser un tableau a deux dimentions qui contiendra le "cryptage" sous la forme
                  {{'B',1}
                  {'O',2}
                  ...
                  ca te permettra d'écrire la correspondance des lettres plus facilement avec une boucle (plutot qu'avec une série de printf) et de faire la conversion facilement, égallement avec une boucle.
                • Pour entrer une chaine de caractère il faut que tu utilises scanf("%s",tavariable)
                • donc pour résumer tu devra avoir :
                  1 : déclaration de ta variable qui contient la correspondance
                  2 : boucle qui affiche la correspondance a l'aide de la variable
                  3 : un scanf qui demande la chaine a encoder
                  4 : une boucle qui parcours la chaine entré et une seconde boucle qui parcours la variable pour chercher la correspondance d'une lettre et l'afficher.


                Bon je sais pas si j'ai été tres clair. Le mieu serait que tu donnes ton niveau ( a quel chapitre tu en est ) car ce que j'ai dis n'est peut etre pas compréhensible si tu n'en est qu'au chapite sur les conditions.


                • Partager sur Facebook
                • Partager sur Twitter
                  10 novembre 2007 à 17:59:24

                  Pour repondre a ta question ,
                  au sujet de mon niveau(rien que de le dire me fait rire :p )
                  j'ai apris scrupulesement la "Partie 1 : [Théorie] Les bases du débutant" (Programmation ,Langage C )
                  j'ai apris que les sujet(mais tous) qui se trouve dans cette partie ,
                  je comprend tres bien les debut de leçon meme si je pense que je commence a ne pas tres bien comrpendre les leçons de la fin de ce chapitre .
                  • Partager sur Facebook
                  • Partager sur Twitter
                    11 novembre 2007 à 18:33:25

                    Ca fait rien de ne pas comprendre, moi aussi je ramais sur certains chapitres, mais avec le temps ça vient. nb : pour mon projet, j'ai réutilisé le code du sokoban et je vien enfin de comprendre précisément comment il marche (avant j'avais encore du mal avec certains détails, depuis déja 6 mois :-° ).

                    macharius : évite de l'embrouiller avec les tableaux a 2 dimentions, sinon il va finir par vomir. De plus, pas besoin de 2 dimentions : une seul suffie mais ca risque d'être un peur compliqué pour baptiste.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 novembre 2007 à 23:52:49

                      Merci spontex ^^
                      Mais en faite je dois me rendre a l'evidence qu'avant de m'amusé a faire de petit programme je doit continué a aprendre tout les cours sur le langage C (au moin lui) ^^
                      Apres peut etr que je ferai ce genre de projet mais il me reste encore tant de chose a apprendre !! :p
                      Le langage C++ , le langage PHP ....
                      olalal j'ai du pain sur la planche ! :o

                      Ne vous inquieté pas ... je reviendrai AHahahaha ! :lol:

                      (ps :je trouve magique cette entraide entre membres Zér0s . merci !)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 novembre 2007 à 13:24:55

                        Ouai, tu dit ça maintenant, et moi aussi, je me disait que j'allais voir le c, puis le c++ et après le truc des sites web. Mais il y a déja tellement de choses a apprendre sur le C que ça me suffit :p !
                        • Partager sur Facebook
                        • Partager sur Twitter
                          13 novembre 2007 à 13:30:38

                          Citation : macharius

                          Salut,

                          jet vais essayer de te donner quelques conseils pour ton projet:

                          • Tout d'abord je te conseille d'utiliser un tableau a deux dimentions qui contiendra le "cryptage" sous la forme
                            {{'B',1}
                            {'O',2}
                            ...
                            ca te permettra d'écrire la correspondance des lettres plus facilement avec une boucle (plutot qu'avec une série de printf) et de faire la conversion facilement, égallement avec une boucle.
                          • Pour entrer une chaine de caractère il faut que tu utilises scanf("%s",tavariable)
                          • donc pour résumer tu devra avoir :
                            1 : déclaration de ta variable qui contient la correspondance
                            2 : boucle qui affiche la correspondance a l'aide de la variable
                            3 : un scanf qui demande la chaine a encoder
                            4 : une boucle qui parcours la chaine entré et une seconde boucle qui parcours la variable pour chercher la correspondance d'une lettre et l'afficher.



                          Bon je sais pas si j'ai été tres clair. Le mieu serait que tu donnes ton niveau ( a quel chapitre tu en est ) car ce que j'ai dis n'est peut etre pas compréhensible si tu n'en est qu'au chapite sur les conditions.




                          La meilleure solution d'après moi
                          • Partager sur Facebook
                          • Partager sur Twitter
                            13 novembre 2007 à 14:12:57

                            Citation : noob4ever

                            Citation : macharius


                            Tout d'abord je te conseille d'utiliser un tableau a deux dimentions qui contiendra le "cryptage".


                            La meilleure solution d'après moi


                            Peut-être, mais il n'a même pas encore vu les tableaux à une dimension. Comment va-t-il s'y prendre pour utiliser un tableau bidimensionnel?

                            Le mieux, d'après moi, ce serait qu'il continue son apprentissage comme il semble être en train de faire, et que, lorsqu'il sera prêt, il revienne sur ce code.


                            Bonne continuation.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              13 novembre 2007 à 14:19:20

                              En quoi utiliser un tableau bi-dimensionel est plus compliqué qu'un simple tableau ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                13 novembre 2007 à 14:23:53

                                Citation : noob4ever

                                En quoi utiliser un tableau bi-dimensionel est plus compliqué qu'un simple tableau ?


                                Dans certains cas, ça l'est. Lors d'une allocation, par exemple, il faut savoir ce que tu fais.
                                Mais le problème n'est pas que les tableaux à deux dimensions (ils apportent tout de même quelques complications) sont plus complexe que les tableaux à une dimension. C'est seulement que le PO ne pas non plus faire des tableaux à une dimension.

                                Bonne continuation.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  13 novembre 2007 à 15:22:29

                                  Citation : Baptiste

                                  voila mes lignes de code :

                                  1. #include <stdio.h>
                                  2. #include <stdlib.h>
                                  3. int main(int argc, char *argv[])
                                  4. {
                                  5.   long codeSecret;
                                  6.   printf("1.A\n");
                                  7.    printf("2.B\n");
                                  8.     printf("3.c\n");
                                  9.      printf("4.D\n");
                                  10.       printf("5.E\n");



                                  L'art de la programmation, c'est aussi d'éviter les répétitions, et de laisser la machine travailler (boucles, calculs,...) Ca évitera les erreurs ('c' au lieu de 'C', par exemple...)

                                  Et pourquoi cette indentation ? Qu'est-ce qui justifie que les lignes soient décalées comme ça ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Music only !
                                    13 novembre 2007 à 18:32:42

                                    je ne c'est pas ,c'est quand j'ecris les lignes avec le lociciel DEV-C++ ;
                                    sa me décale chaque ligne ,remarque tant mieux car sa permet que tout soit plus lisble ^^
                                    Sur ce ,merci pour toute vos reponse :D
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      13 novembre 2007 à 19:50:21

                                      Plop, voici ma petite fonction à moi :

                                      1. int main()
                                      2. {
                                      3.     char texte[] = "Salut";
                                      4.     long i = 0;
                                      5.     while (texte[i] != '\0')
                                      6.     {
                                      7.         if (texte[i] == 'a')
                                      8.         {
                                      9.             texte[i] = 'b';
                                      10.         }
                                      11.         i++;
                                      12.     }
                                      13.     printf("%s", texte);
                                      14.     return 0;
                                      15. }


                                      Pour le moment ça ne modifie que les a en b mais je suis entrain de chercher un moyen de faire une bocle pour que ça le fasse avec toutes le lettre de l'alphabet, seulement je trouve pas ^^. Je vais essayer avec un truc style caractere++ à la place du 'a'.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        13 novembre 2007 à 22:09:04

                                        Citation : noob4ever

                                        Citation : macharius

                                        Salut,

                                        jet vais essayer de te donner quelques conseils pour ton projet:
                                        ...



                                        La meilleure solution d'après moi


                                        Ha bon? Alors essaye de faire un petit code comme le mien avec un tableau a dimentions. Mais sache qu'un tableau a dimention contient déja 2 information : numéro de variable et valeur.

                                        1. #include <stdlib.h>
                                        2. #include <string.h>
                                        3. int main(int argc,char **argv)
                                        4. {
                                        5.     int i = 0;
                                        6.     char mot[30] = "hello world !", cryptage[100] = "azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN,?;.:/!§&é\"\'(-è_çà)=~#{[|`\\^@]}°+ ù%^¨$£¤*µ";
                                        7.     char *caractere = NULL;
                                        8.     //On parcours la chaîne
                                        9.     for(i = 0 ; i < 30 ; i ++)
                                        10.     {
                                        11.         //Si le caractère vaut 0 (donc rien) on quitte la boucle
                                        12.         if(mot[i] == 0)
                                        13.         {
                                        14.             break;
                                        15.         }
                                        16.         caractere = strchr(cryptage, mot[i]);
                                        17.         //Si le caractere n'est pas répertorié dans la chaine de cryptage, on met un 0
                                        18.         if(caractere == NULL)
                                        19.         {
                                        20.             printf("0");
                                        21.         }
                                        22.         /*On manipule ici les adresses de mémoire, example :
                                        23.         si cryptage[0] est a l'adresse 14000, et que le caractere inscrit à mot[i] est 't',
                                        24.         caractere vaut 14000 + 5 (t est le cinquième caractere de la liste).
                                        25.         donc on a 14005 et pour récupérer le 5, on fait l'opération inverse de celle ci-dessus.
                                        26.         (garde le schéma des pointeur de m@teo sous les yeux, sinon, t'aura du mal)*/
                                        27.         else
                                        28.         {
                                        29.             printf("%ld ", caractere - &cryptage[0]);
                                        30.         }
                                        31.     }
                                        32.     return EXIT_SUCCESS;
                                        33. }

                                        :)
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          14 novembre 2007 à 0:30:29

                                          Spontex , je reve ou tu a terminé mon projet ?? :D
                                          C'est les bonnes lignes de codes ????
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            14 novembre 2007 à 0:52:15

                                            ->Spontex : Trois commentaires.
                                            1. for(i = 0 ; i < (int)strlen(mot) ; i ++)
                                            conviendrait plus.
                                            1. printf("-1")
                                            (si le caractère n'est pas présent). Pour éviter la confusion avec le a. (détail mineur).
                                            Et l'ajout de fflush(stdout) après tes printf qui ne finissent pas par un '\n'.

                                            Sinon, très bon code. Bien pensé ;)
                                            (si j'ai le temps, je le fais en tableau bidimensionnel, pour montrer que c'est plus complexe que cette solution ;) ).

                                            Bonne continuation.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              14 novembre 2007 à 15:33:28

                                              Voila, j'ai du nouveau pour le code, pour le moment c'est à ma façon mais tu peux l'adapter pour toi :

                                              1. int main()
                                              2. {
                                              3.     char texte[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ", majuscule = 'A', majInverse = 'Z';
                                              4.     long i = 0;
                                              5.     while (texte[i] != '\0')
                                              6.     {
                                              7.         if (texte[i] == majuscule)
                                              8.         {
                                              9.             texte[i] = majInverse;
                                              10.             i++;
                                              11.         }
                                              12.         else
                                              13.         {
                                              14.             majuscule++;
                                              15.             majInverse--;
                                              16.         }
                                              17.     }
                                              18.     printf("%s", texte);
                                              19.     return 0;
                                              20. }


                                              Donc tu l'aura compris ça change les lettre par leu lettre "inverse" A = Z, B = Y (ça s'appelle Atbash). Toi tu n'as qu'a mettre des chiffre à la place des lettre pour la modification.
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                15 novembre 2007 à 23:30:28

                                                Salut Amenia ,

                                                Tout d'abord merci pour le code :)
                                                Je pense que tu va me prendre pour un(Zér0? ^^ ) mais je ne vois pas ou je doit placé mes code ... :(
                                                Donne moi juste un petit example stp , si part example mon code est :

                                                A=1
                                                B=2
                                                C=3
                                                D=4
                                                E=5
                                                F=6
                                                G=7
                                                H=8
                                                I=9
                                                J=10
                                                .....(ta compri le systeme ^^)...
                                                voila c'est pas mon code officiel mais c'est pour me donné un apreçu :lol:

                                                Le probleme c'est que je sait pas ou placé ces chiffres :euh:
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  16 novembre 2007 à 1:41:53

                                                  Citation : Baptiste

                                                  Salut Amenia ,

                                                  Tout d'abord merci pour le code :)
                                                  Je pense que tu va me prendre pour un(Zér0? ^^ ) mais je ne vois pas ou je doit placé mes code ... :(
                                                  Donne moi juste un petit example stp , si part example mon code est :

                                                  A=1
                                                  B=2
                                                  C=3
                                                  D=4
                                                  E=5
                                                  F=6
                                                  G=7
                                                  H=8
                                                  I=9
                                                  J=10
                                                  .....(ta compri le systeme ^^)...
                                                  voila c'est pas mon code officiel mais c'est pour me donné un apreçu :lol:

                                                  Le probleme c'est que je sait pas ou placé ces chiffres :euh:



                                                  En fait, le code d'Amenia ne crypte pas les lettres en chiffres, mais il change les lettre en les inversant (A devient Z, B devient Y et etc).

                                                  Pour faire un code avec des chiffre, spontex à donné la meilleur solution, jusqu'à date ;)

                                                  Bonne continuation.
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    16 novembre 2007 à 13:36:26

                                                    Citation : Baptiste

                                                    Spontex , je reve ou tu a terminé mon projet ?? :D
                                                    C'est les bonnes lignes de codes ????


                                                    Alors tu n'as qu'a faire le décripteur :lol: (et une entrée manuelle de la phrase a coder).
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      18 novembre 2007 à 21:51:12

                                                      Enfait mon code modifier peut tres bien etre utilisé par baptiste... Voici la derniere modif que j'ai fait :

                                                      1. #include <stdio.h>
                                                      2. #include <stdlib.h>
                                                      3. int main()
                                                      4. {
                                                      5.     long i = 0, j = 0;
                                                      6.     char texte[200] = {0};
                                                      7.     char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
                                                      8.     char alphabetInverses[] = "ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba";
                                                      9.     printf("Entrez votre texte :");
                                                      10.     scanf("%s", texte);
                                                      11.     while (texte[i] != '\0')
                                                      12.     {
                                                      13.         if (texte[i] == alphabet[j])
                                                      14.         {
                                                      15.             texte[i] = alphabetInverses[j];
                                                      16.             j = 0;
                                                      17.             i++;
                                                      18.         }
                                                      19.         else if (alphabet[j] == '\0')
                                                      20.         {
                                                      21.             j = 0;
                                                      22.             i++;
                                                      23.         }
                                                      24.         else
                                                      25.         {
                                                      26.             j++;
                                                      27.         }
                                                      28.     }
                                                      29.     printf("%s", texte);
                                                      30.     return 0;
                                                      31. }


                                                      Il respecte la case et la pontctuation, à toi de le changer pour qu'il mette des chiffre à la place des lettres c'est franchement pas compliqué, tu as juste 1 variable à changer
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        21 novembre 2007 à 14:52:14

                                                        Ouai, ben fais comme tu veut mais pour crypter une phrase entière, je pense que tu aura besoin de ça ;)
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

                                                        Faire son Code Secret

                                                        × 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