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 :

Aide Programmation modulaire


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant en filière informatique
    Inscrit en
    Avril 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant en filière informatique

    Informations forums :
    Inscription : Avril 2022
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Aide Programmation modulaire
    J'aimerais faire une programmation modulaire du ROT 13. J'ai code mais ça ne compile pas j'aimerais connaître l'erreur.
    Voici mon main .c
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "essai.h"
     
    int main()
    {
     
    char text[5], crypter_txt[5],decrypter_txt[5];
     
    printf("Enter le texte que l�on veut coder : \n");
    scanf("%s",&text);
     
    strcpy(crypter_txt, crypte(text));
    printf("\n Le texte code est : \n");
    scanf("%s",crypter_txt);
     
    strcpy(decrypter_txt, decrypte(crypter_txt));
    printf("\n\n Le texte decode est : \n");
    scanf("%s",decrypter_txt);
     
        return 0;
    }
    Voici mon code essai.c
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "essai.h"
     
     
    char* crypter(char crypter_txt[]){
    int i,n;
    char ch;
    for(i=0;i<strlen(crypter_txt);i++){
        n=crypter_txt[i];
        n=n+13;
        if(n>90){
            n=n-90+64;
            ch=n;
            crypter_txt[i]=ch;
     
        }else{
        ch=n;
        crypter_txt[i]=ch;
        }
     
    }
    return crypter_txt;
    }
     
    char* decrypter(char decrypter_txt[]){
    int i,n;
    char ch;
    for(i=0;i<strlen(decrypter_txt);i++){
        n=decrypter_txt[i];
        n=n-13;
        if(n<65){
            n=91-(65-n);
            ch=n;
            decrypter_txt[i]=ch;
     
        }else{
        ch=n;
        decrypter_txt[i]=ch;
        }
     
    }
    return decrypter_txt;
    }
    Et voici mon essai.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #ifndef ESSAI_H
     
    #define ESSAI_H
     
     
    char* decrypte(char decrypter_txt[]);
    char* crypte(char crypter_txt[]);
    #endif // ESSAI_H

  2. #2
    Membre éclairé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2015
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Septembre 2015
    Messages : 204
    Points : 839
    Points
    839
    Par défaut
    déjà quels sont les messages d'erreur retournés par ton compilateur ?
    normalement, il te donne des pistes

    dans ton main, tu appelles crypte et decrypte , elles n'existent pas (erreur de frappe/copier coller ?)

    à quoi servent les 2 derniers scanf ?

    ensuite il y a un problème dans la fonction decrypter (elle compile, mais elle ne fait pas ce que tu veux)


    pour des questions de vitesse :
    tu appelles strlen dans le for
    => si tu ne modifies pas la taille de la chaine dans la bouche, tu peux sortir le strlen de ta boucle for
    tu évalues strlen avant le for et dans le for tu testes avec le résultat
    car à chaque boucle le strlen est évalué, donc perte de performance

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant en filière informatique
    Inscrit en
    Avril 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant en filière informatique

    Informations forums :
    Inscription : Avril 2022
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Programmation codage ROT13
    Je viens de constater que j'avais fait une erreur, merci pour la remarque , j'ai enlevé les scanf , ajouter mes fonctions dans le essai.h et mtn ça compile mais ça ne differenci pas les caractères majuscules et minuscules lors du codage.

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour
    ligne 12: scanf("%s", &text).
    ligne 16: scanf("%s", crypter_txt).
    Deux instructions similaires qui ne sont pas écrites de la même façon => au-moins l'une des deux est donc mal écrite

    ligne 18: strcpy(decrypter_txt, decrypte(crypter_txt)).
    ligne 20: scanf("%s", decrypter_txt).
    Tu remplis deux fois la même variable sans la lire entre temps => au-moins l'une des deux instructions est inutile

    ligne 10: for(i=0;i<strlen(crypter_txt);i++).
    Pas de strlen() dans une boucle (la fonction est appelée à chaque tour) => for(i=0; crypter_txt[i] != '\0'; i++) (et si tu pouvais passer par un pointeur ce n'en serait que mieux)

    ligne 19:
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ch=n;
    crypter_txt[i]=ch;
    Mouais, pourquoi pas. Mais moi j'aurais plutôt écrit
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ch=n;
    x=ch;
    y=x;
    z=y;
    ppp=z;
    toto=ppp;
    crypter_txt[i]=toto;
    Tant qu'à écrire des instructions inutiles, autant y aller à fond

    Citation Envoyé par Clover Voir le message
    mais ça ne differenci pas les caractères majuscules et minuscules lors du codage.
    Et comment tu programmes cette différenciation ?

    PS: pas de nombre magique (65, 97, etc). Utilise ce qu'ils représentent ('A', 'a', etc)
    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. aide programme debutant
    Par mator dans le forum C
    Réponses: 5
    Dernier message: 20/04/2006, 19h30
  2. programmation modulaire
    Par barbarello dans le forum C++
    Réponses: 2
    Dernier message: 19/02/2006, 13h04
  3. [Projet] Programmation modulaire d'un projet.
    Par loverdose dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 18/11/2005, 21h59
  4. PERL AIDE PROGRAMMATION
    Par kiza dans le forum Langage
    Réponses: 2
    Dernier message: 17/10/2005, 16h57

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