Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1735 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Algorithme de Vigenere en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Algorithme de Vigenere en C

n°1278314
Xavi64
Posté le 06-01-2006 à 17:20:37  profilanswer
 

Salut, donc voilà mon problème : je cherche à écrire l'algorithme de Vigenere en C (uniquement le cryptage). Je vous donne le lien pour que vous compreniez de quoi il s'agit : http://www.chez.com/algor/vigenere.htm
 
J'ai essayé de l'écrire en C, sous VisualC ++6 quand je compile je n'ai aucune erreur mais lors de l'exécution ça plante si je puis dire. Voilà mon programme si qq'un pouvait essayer de m'aider ce serait vraiment sympa merci bcp.
 
 
 
 
void main()
{
    char Cle[80];
    char Phrase[800];
    char Alpha[27] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','\0'};
    char cod[800];
    int posCle = 0;
     
    printf("Cle:" );
    scanf("%s",Cle);
    printf("Phrase a coder:" );
    scanf("%s",Phrase);
    int lenphrase = strlen(Phrase);
    int lencle = strlen(Cle);
    int i;
    char LetCle;
    char* PosLetCle;
    char Let;
    char* Pos;
    int NouvPos;
     
    for(i=0;i<lenphrase;i++)
     
   
   
   
  /* on gere la progression dans la cle */
 
 
 {
         
         posCle = posCle+1;
        if (posCle > lencle)
           posCle = 1;
         
   
  /* on determine quelle est la lettre cle et sa position dans l'alphabet */
   
 
  LetCle = Cle[posCle];
        PosLetCle = strchr(Alpha, LetCle);
         
  /* on determine la position de la lettre a coder et le decalage a appliquer */
 
   
  Let = Phrase[i];
        Pos = strchr(Alpha, Let);  
        NouvPos = *Pos + *PosLetCle;
        if (NouvPos > 26)
           NouvPos = NouvPos - 26;
        char chartest = Alpha[NouvPos];
        char *strcat(char *cod, const char *chartest);
 
     
    printf("la phrase codee est:\n", cod);
     
 
 }
 
 
}

mood
Publicité
Posté le 06-01-2006 à 17:20:37  profilanswer
 

n°1278359
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-01-2006 à 19:37:54  profilanswer
 

Xavi64 a écrit :

Salut, donc voilà mon problème : je cherche à écrire l'algorithme de Vigenere en C (uniquement le cryptage). Je vous donne le lien pour que vous compreniez de quoi il s'agit : http://www.chez.com/algor/vigenere.htm
 
J'ai essayé de l'écrire en C, sous VisualC ++6 quand je compile je n'ai aucune erreur


Essaye un meilleur compilateur, ou apprends à le regler...


Project   : OP code
Compiler  : GNU GCC Compiler (called directly)
Directory : C:\dev\forums\OP\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: main.c
main.c:2: error: conflicting types for 'main_'
C:/clib/frmwrk/inc/main.h:36: error: previous declaration of 'main_' was here
main.c:2: error: conflicting types for 'main_'
C:/clib/frmwrk/inc/main.h:36: error: previous declaration of 'main_' was here
main.c: In function `main_':
main.c:9: error: implicit declaration of function `printf'
main.c:9: warning: nested extern declaration of `printf'
<internal>:0: warning: redundant redeclaration of 'printf'
main.c:10: error: implicit declaration of function `scanf'
main.c:10: warning: nested extern declaration of `scanf'
<internal>:0: warning: redundant redeclaration of 'scanf'
main.c:13: error: implicit declaration of function `strlen'
main.c:13: warning: nested extern declaration of `strlen'
<internal>:0: warning: redundant redeclaration of 'strlen'
main.c:41: error: implicit declaration of function `strchr'
main.c:41: warning: nested extern declaration of `strchr'
<internal>:0: warning: redundant redeclaration of 'strchr'
main.c:52: warning: declaration of 'cod' shadows a previous local
main.c:6: warning: shadowed declaration is here
main.c:52: warning: declaration of 'chartest' shadows a previous local
main.c:51: warning: shadowed declaration is here
main.c:52: warning: nested extern declaration of `strcat'
main.c:55: warning: too many arguments for format
main.c:51: warning: unused variable `chartest'
main.c:61:2: warning: no newline at end of file
Process terminated with status 1 (0 minutes, 0 seconds)
8 errors, 12 warnings


Quelques commentaires et corrections rapides (-ed-) :


 
/* -ed- manquait pour printf()...  */
#include <stdio.h>
 
/* -ed- manquait pour strlen()...  */
#include <string.h>
 
/* -ed- main() retourne int. Toujours. */
int main(void)
{
   char Cle[80];
   char Phrase[800];
 
   /* -ed-
       char Alpha[27] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','\0'};
 
   Une facon compliquee d'ecrire
   */
   char Alpha[] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
 
   char cod[800];
   int posCle = 0;
 
   printf("Cle:" );
   /* -ed- manque un '\n' ou un fflush (stdout);
 
           http://mapage.noos.fr/emdel/notes.htm#fflush_stdout
   */
   fflush (stdout);
 
   scanf("%s", Cle);
   printf("Phrase a coder:" );
 
   fflush (stdout);
   scanf("%s", Phrase);
 
   /* -ed- construction interdite en C90... Ajoute bloc. */
   {
      int lenphrase = strlen(Phrase);
      int lencle = strlen(Cle);
      int i;
      char LetCle;
      char* PosLetCle;
      char Let;
      char* Pos;
      int NouvPos;
 
      for (i = 0; i < lenphrase; i++)
      {
         /* on gere la progression dans la cle */
 
         posCle = posCle + 1;
         if (posCle > lencle)
            posCle = 1;
 
 
         /* on determine quelle est la lettre cle et sa position dans l'alphabet */
 
 
         LetCle = Cle[posCle];
         PosLetCle = strchr(Alpha, LetCle);
 
         /* on determine la position de la lettre a coder et le decalage a appliquer */
 
 
         Let = Phrase[i];
         Pos = strchr(Alpha, Let);
         NouvPos = *Pos + *PosLetCle;
 
         /* -ed- se renseigner sur l'operateur MODULO (%) */
         if (NouvPos > 26)
            NouvPos = NouvPos - 26;
 
         {
            /* -ed-
                  char chartest = Alpha[NouvPos];
            pas utilise. C'est louche... */
 
            /* -ed-
                     char *strcat(char *cod, const char *chartest);
            c'est quoi ce prototype au mileu du code ? Il est sorti de sa cage ? */
 
 
            /* -ed-
            printf("la phrase codee est:\n", cod);
            manque un formatteur. */
            printf("la phrase codee est: '%s'\n", cod);
         }
 
      }
   }
   return 0;
}

Message cité 1 fois
Message édité par Emmanuel Delahaye le 06-01-2006 à 20:20:19

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1278421
Sve@r
Posté le 06-01-2006 à 21:05:48  profilanswer
 

Emmanuel Delahaye a écrit :

Quelques commentaires et corrections rapides (-ed-) :


 
/* -ed- manquait pour printf()...  */
#include <stdio.h>
 
/* -ed- manquait pour strlen()...  */
#include <string.h>
 
/* -ed- main() retourne int. Toujours. */
int main(void)
{
   char Cle[80];
   char Phrase[800];
 
   /* -ed-
       char Alpha[27] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','\0'};
 
   Une facon compliquee d'ecrire
   */
   char Alpha[] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
 
   char cod[800];
   int posCle = 0;
 
   printf("Cle:" );
   /* -ed- manque un '\n' ou un fflush (stdout);
 
           http://mapage.noos.fr/emdel/notes.htm#fflush_stdout
   */
   fflush (stdout);
 
   scanf("%s", Cle);
   printf("Phrase a coder:" );
 
   fflush (stdout);
   scanf("%s", Phrase);
 
   /* -ed- construction interdite en C90... Ajoute bloc. */
   {
      int lenphrase = strlen(Phrase);
      int lencle = strlen(Cle);
      int i;
      char LetCle;
      char* PosLetCle;
      char Let;
      char* Pos;
      int NouvPos;
 
      for (i = 0; i < lenphrase; i++)
      {
         /* on gere la progression dans la cle */
 
         posCle = posCle + 1;
         if (posCle > lencle)
            posCle = 1;
 
 
         /* on determine quelle est la lettre cle et sa position dans l'alphabet */
 
 
         LetCle = Cle[posCle];
         PosLetCle = strchr(Alpha, LetCle);
 
         /* on determine la position de la lettre a coder et le decalage a appliquer */
 
 
         Let = Phrase[i];
         Pos = strchr(Alpha, Let);
         NouvPos = *Pos + *PosLetCle;
 
         /* -ed- se renseigner sur l'operateur MODULO (%) */
         if (NouvPos > 26)
            NouvPos = NouvPos - 26;
 
         {
            /* -ed-
                  char chartest = Alpha[NouvPos];
            pas utilise. C'est louche... */
 
            /* -ed-
                     char *strcat(char *cod, const char *chartest);
            c'est quoi ce prototype au mileu du code ? Il est sorti de sa cage ? */
 
 
            /* -ed-
            printf("la phrase codee est:\n", cod);
            manque un formatteur. */
            printf("la phrase codee est: '%s'\n", cod);
         }
 
      }
   }
   return 0;
}



 
Tu t'en donnes du mal - Parfois je t'admire...
 
PS: J'ai lu tous tes commentaires (il y en aura au-mois un !!!)


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Algorithme de Vigenere en C

 

Sujets relatifs
Algorithme de permutationsAlgorithme pour trouver le chemin le plus cours
algorithme et programation pbAlgorithme : Test combinatoire !
Algorithme Palindromique!!L'algorithme de choix d'un conteneur STL
Cherche cours algorithmeAlgorithme Java/ Struts.
algorithme[Algorithme] Stockage film sur DVD
Plus de sujets relatifs à : Algorithme de Vigenere en C


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)