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 :

programmation vigenère en language C


Sujet :

C

  1. #1
    Invité
    Invité(e)
    Par défaut programmation vigenère en language C
    bonjour,

    j'aimerai avoir un peu d'aide sur mon programme qui fonctionnne pas. Je dois faire un programme en virgènere qui code les espaces, les chiffres, les majuscules et les minuscules uniquement. pouvez-vous m'aider ? De plus à la ligne 53, on me dit "subscripted value is neither array nor pointer nor vector" qui correspond a cettte ligne la " msgcode[i] = ((phrase[i] + nombre2[i]) + 62) + 'a';". Je suis débutant en language C et je me debrouille pas trop bien, j'ai beaucoup mal et j'aimerai vraiment un coup de main pour ce projet. merci beaucoup d'avance

    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
     
    #include <stdlib.h>
    #include<stdio.h>
    #include<string.h>
     
     
     
    int main()
    {
       // int a=0;
        int  i;
        char nombre;
        char nombre2;
        char nombre3;
       // int alphanum;
       // int nombre4;
        int j;
        int alphanum;
        char alpha[]= "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz";
       // char alphaMIN []="abcdefghijklmnopqrstuvwxyz";
        char num[]="1234567890";
        char phrase[1000];
        char phrasecode[1000]="";
        char cle[nombre];
        char msgcode[nombre];
        char msgdecode[nombre];
        puts("entrer votre message : \n");
        gets(phrase);
        puts("entre votre cle: \n ");
        gets(cle);
        nombre=strlen(phrase);
        nombre2=strlen(cle);
        alphanum=strlen(alpha);
        printf("chaine phrase = %d \n",nombre);
        printf("Chaine cle = %c \n",nombre2);
        printf("chaine de alpha = %d \n",alphanum);
     
           //pour repeter la cle
        for(i = 0, j = 0; i < nombre; ++i, ++j)
            {
            if(j == nombre2)
                j = 0;
     
            cle[i] = cle[j];
            }
     
        cle[i] = '\0';
     
     
        //pour coder :
      phrasecode[i]=phrase[i]+cle[i%nombre2]-nombre3;
       for(i = 0; i < nombre; ++i)
       {
            msgcode[i] = ((phrase[i] + nombre2[i]) + 62) + 'a';
     
        msgcode[i] = '\0';
       }
     
        //    phrasecode[i]<alphanum;
           printf("Caractere %d: %c  \n cle : %c \n code : %c\n",i,phrase[i],cle[i%nombre2],phrasecode[i]);
     
        printf("Votre phrase est: %s \n",phrase);
        //phrasecode[i]=alpha[phrasecode];
     
     
     
     
       //pour décoder :
       // phrasecode[i]=alpha*(phrase(65+(nombre+nombre2)%26));
        */printf("Votre phrase coder est: %s \n",phrasecode)
     
        return 0;
    }
    Dernière modification par f-leb ; 27/01/2018 à 17h48. Motif: Balises [CODE], le bouton '#' dans le fenêtre d'édition des messages

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 816
    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 816
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Déjà, est-ce que tu sais comment fonctionne le chiffre de Vigenère (et non Virgènere) ??? Parce qu'à voir comment tu écorches le nom de ce cryptographe dont le code est resté inviolé pendant 3 siècles (Enigma est tombé en moins de 10 ans !!!) on sent bien que tu ne t'y intéresses pas tellement. De là, t'étonne pas si personne ne s'intéresse à ton souci.
    Ensuite, quel est dans ton esprit le sens des variables "nombre1", "nombre2", "nombre3" et "nombre4" ???
    Faire un code, c'est d'abord avoir une idée claire de la façon de le faire à la main. Ensuite là seulement tu peux traduire ton algorithme en instructions.

    Le chiffre de Vigenère est un mécanisme de chiffrement poly-alphabétique. Chaque lettre du message est chiffrée sur un alphabet différent, alphabet qui se récupère à partir du code secret.
    Si par exemple ton code secret est "bonjour", alors la première lettre sera chiffrée sur l'alphabet commençant à "b" ("bcdef...xyza"), la seconde sur l'alphabet commençant à "o" ("opqrst...jklmn") et etc. et quand on arrive à la fin du mot de code, on recommence (donc le même alphabet sera réutilisé toutes les 7 lettres).
    Pour chiffrer sur un alphabet particulier (par exemple l'alphabet "o"), alors il suffit d'ajouter à la lettre l'écart entre "o" et "a" (donc 15). Exemple un "j" (9° lettre) deviendra 'j' + 'o' - 'a' soit 'x' (24° lettre). Faut juste aussi penser au cas où ça dépasse 'z' et dans ce cas, il faut retrancher 26.

    Concernant le souci de la ligne 53 ben tu demandes un calcul utilisant la variable nombre2[i] alors que "nombre2" n'est pas un tableau. Le pauvre compilo ne pige plus rien. Et d'un point de vue purement logique, écire msgcode[i]=truc à la ligne 53 et msgcode[i]=autre_truc à la ligne 54 (toutes deux dans le même bloc) semble assez absurde (enfin au-moins pour l'une des deux instructions). Rien que le fait que tu aies écrit ces deux lignes sans te dire "bizarre, j'affecte deux choses différentes à la même variable" confirme mon idée première à savoir que le C (ou la prog) n'est pas ta préoccupation première (ni même seconde)...
    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. Programmation UEFI EDK2 (language C)
    Par arcanum28 dans le forum Autres systèmes
    Réponses: 1
    Dernier message: 06/10/2017, 01h23
  2. passage d'une programmation basic en language c
    Par gogi000 dans le forum Débuter
    Réponses: 5
    Dernier message: 16/08/2012, 10h09
  3. programmation graphique en language c
    Par walid chehboun dans le forum Débuter
    Réponses: 3
    Dernier message: 06/03/2011, 23h44
  4. Vive la programmation ! Mais quel language ?
    Par izandril dans le forum Débuter
    Réponses: 15
    Dernier message: 04/12/2004, 21h19
  5. je veux apprendre la programmation quel language choisir??
    Par existance dans le forum Débuter
    Réponses: 26
    Dernier message: 06/08/2002, 05h32

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