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 :

Fonction remplacement


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 10
    Par défaut Fonction remplacement
    Bonjour a tous, pour mon premier message sur le forum j'ai une petite (vraiment petite ) colle a vous posez qui me fait réfléchir depuis un petit moment déjà.
    Je voudrais créer une fonction qui remplace les lettres A --> B , B --> C
    (Le nombre de César en gros).
    J'ai donc voulu faire quelque chose du genre :
    "Entrez votre nombre de décalage" ( decalage = nombre de lettres a sauter)
    "Entrez votre expression"
    "Voici l'expression cryptée"

    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
    long crypt (int c)
    {
        c = getchar();
        if (c = 'A');
            putchar('B');
        else if ( c = 'B');
            putchar('C');
       ....
    }
     
    {
    char expression[100];
               expressionC = crypt(expression);
    scanf("%s", expression);
                    printf("Nous allons maintenant crypter votre expression : ");
                    printf("%d",expressionC);
    }
    Déjà cette fonction ne marche pas et je voudrais savoir si il y avait un moyen de ne pas se taper toutes les lettres une par une °°.

    J'ai essayé au maximum de réduire le code que j'ai mis pour pas faire un message trop long, mon code est déjà plus long que ca. C'est mon premier "vrai" programme et j'aimerais avoir des conseils de tous pour m'améliorer.
    Merci d'avance, je reste a dispositions pour des précisions que j'aurais a fournir si nécessaire.

  2. #2
    Membre éclairé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Par défaut
    Citation Envoyé par MaxXxoui Voir le message

    long crypt (int c)
    {
    c = getchar();
    if (c = 'A');
    putchar('B');
    else if ( c = 'B');
    putchar('C');
    ....
    }

    {
    char expression[100];
    expressionC = crypt(expression);
    scanf("%s", expression);
    printf("Nous allons maintenant crypter votre expression : ");
    printf("%d",expressionC);
    }
    Une soluce rapide que je n'ai pas testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    long crypt (int c){
    char var = getchar();
    printf("%c\n", var + int);
     
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 10
    Par défaut
    Tout d'abord merci pour ta réponse très rapide !
    Je n'ai cependant pas trop compris ce que représenter ton code, sachant que je suis encore un débutant. Pourrais tu me détaillé tout ca s'il te plait ?°°

  4. #4
    Membre émérite
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Par défaut
    Salut,

    Comme tu as pu le remarque, il y a des problemes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    expressionC = crypt(expression);
    scanf("%s", expression);
    Tu demandes expression a l'utilisateur apres le cryptage...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    scanf("%s", expression);
    printf("Nous allons maintenant crypter votre expression : ");
    expressionC = crypt(expression);
    printf("%s",expressionC);
    semble plus logique tu crois pas?

    Concernant ta fonction de cryptage: getchar permet la saisie de caracteres, hors tu as deja saisie expression. Ce que tu veux c'est copier les lettres en les decalant une par une. Pour renvoyer une chaine de caractere en C c'est un peu complique, pour commencer le plus simple a mon avis est de passer un pointeur en parametre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void crypt(char* original, char* copie,  int decalage) {
        int i;
        for (i = 0; i < 100; i++)
            copie[i] = original[i] + decalage;
    }
    Et pour l'appeller comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    scanf("Expression: %s", expression);
    scanf("Decalage: %d", decalage);
    printf("Nous allons maintenant crypter votre expression : ");
    crypt(expression, expressionC, decalage);
    printf("%s",expressionC);
    Aussi, le formet pour une chaine de caractere c'est %s, pas %d.

    Attention tout de meme, le resultat depend de la table de caractere utilisee.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 10
    Par défaut
    J'ai essayé de refaire mon programme mais je garde quelques bugs.
    Cependant comme je l'ai dis dans mon premier message je suis encore qu'un simple novice dans la programmation.
    Je vais continuer d'essayer de faire moi même ce programme mais je vais d'abord essayer de relire les cours du bouquin et quelques tutoriaux avant de vouloir me lancer dans les pointeurs et tout ...
    Merci quand même pour vos réponses, je vais garder vos idées pour améliorer le programme.
    Merci a tous et bon continuation, c'est vraiment un bon forum pour avoir une réponse si rapide

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 450
    Par défaut
    Citation Envoyé par MaxXxoui Voir le message
    J'ai essayé de refaire mon programme mais je garde quelques bugs. Cependant comme je l'ai dis dans mon premier message je suis encore qu'un simple novice dans la programmation.
    L'idée générale, en l'occurence, est que, pour un ordinateur, un caractère est toujours représenté par un nombre (code ASCII ou autre) qui correspond en fait à son numéro d'entrée dans une table. Un caractère « en lui-même » ne peut pas être codé en binaire. :-)

    Comme dans le code ASCII, et dans pratiquement toutes les autres formes de codage, les lettres sont représentées successivement et dans l'ordre de l'alphabet, il te suffit d'incrémenter le code de ce caractère pour passer à la lettre suivante. Il faut juste que tu vérifies que tu ne dépasses pas « Z », auquel cas tu reviens à « A ». Mieux encore : tu peux utiliser le modulo « % ».

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 10
    Par défaut
    Ouais je savais qu'on ne pouvais pas mettre un caractère dans un code comme ca mais je pensais que lorsqu'on mettait 'A' ça représentait tout de même le caractère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void crypt(char* original, char* copie,  int decalage) {
        int i;
        for (i = 0; i < 100; i++)
            copie[i] = original[i] + decalage;
    }
    Ce code me permettrait donc de faire la fonction ?
    Ce que je comprend pas c'est que içi on ne parle pas de l'expression qui est rentrée par l'utilisateur donc je vois pas comment on peut utiliser cela.
    A moins qu''il faudrait écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    expressionC = crypt(expression)
    Ou expressionC représente l'expression cryptée que le programme va ressortir et expression, l'expression entrée par l'utilisateur ?
    (Si c'est cela, dois-je définir expressionC comme un tableau ou pas ?)
    (Ou encore est ce que je peux pas mettre tout simplement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%s",crypt(expression)
    Merci pour vos réponses et vos détails

Discussions similaires

  1. fonction remplace en vb.net
    Par dieudo dans le forum VB.NET
    Réponses: 3
    Dernier message: 28/02/2008, 11h41
  2. Fonction remplacer
    Par ANTMA dans le forum Excel
    Réponses: 2
    Dernier message: 07/12/2007, 16h40
  3. Fonction "Remplacer" Code VBA Access
    Par Lorenzole+bo dans le forum VBA Access
    Réponses: 6
    Dernier message: 27/09/2007, 21h17
  4. [vba E] fonction remplacer
    Par Bruno02 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/04/2007, 03h11
  5. Fonction remplace
    Par isamourgeo dans le forum Access
    Réponses: 3
    Dernier message: 15/03/2006, 20h48

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