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 :

Comparaison de caractères , et autres problèmes [Débutant(e)]


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 16
    Par défaut Comparaison de caractères , et autres problèmes
    bonjour à tous
    je me suis réçamment initié au monde merveilleux de la programation

    Depuis quelque jours je me casse la tête sur certains problèmes
    et tout aides , conseils , directions vers un tutorial très précis ,
    seras grandement aprécié
    Je lis les faqs , mais n'ai pas encore trouver de quoi m'aider...

    J'ai deux principaux problèmes
    voilà donc le premier :

    Je voudrais comparer deux chaines de charactères entre elles
    de sorte que , après les avoir entrées dans mon programme, celui-ci me retourne
    le nombre de différences entre ces chaines
    examples :
    $./nomduprogramme "linux" "linux"
    $ 0 différence(s)

    $./nomduprogramme "window" "windows"
    $ 1 différence(s)

    $./nomduprogramme "tutu" "tutos"
    $ 2 différences

    Donc après "quelques" tatônnements , voilà où j'en suis :
    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
     
    #include <stdio.h> <string.h> <stdlib.h>
    int main (void)
    {
     
    char str1[10], str2[10];
    int n;
     
    printf ("2 mots : ");
    scanf ("%s%s", str1, str2);
     
    n = strncmp (str1, str2, 10);
    if (strncmp(str1, str2, 10)==0)
    {
    printf ("%i mutations(s)\n", n);
    }
     
    else
    {
    printf ("%i mutation(s)\n", n);
    }
     
    return 0;
    }
    Bon, je sais que c'est loin d'être ça , mais merci d'avance pour tout conseil sur la direction à prendre .
    Au passage , je cherche aussi comment faire un filtre , qui interdirais une lettre et me retournerais un message d'erreur que j'aurais écris.



    Le 2ème problème maintenant concernant un autre programme :
    Je cherche à ce qu'après avoir entré le nom et la taille de plusieures personnes
    ce programme me donnes les noms dans un certain ordre

    mais c'est bizarement la première partie qui me pose le plus de problèmes...
    avec une personne , ça va :
    nom : nom1 //j'entre les infos
    poid : 50

    le plus gros est : nom1 //vu qu'il est seul , c'est forcément le plus gros...

    Lorsque je veut comparer le poid de 2 personnes j'ai ça :
    nom : nom1 //là aussi j'entre les infos
    poid : 50
    nom : poid : //sur la même ligne , et bien sûr , ça ne marche pas


    Je signale que le peu que j'ai fait compile normalement.
    Puisse un âme charitable avoir la patience de me répondre.

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Commençons avec un seul problème à la fois.

    Combien y a-t'il pour toi de différence entre les chaine "linux" et "chappuis"? En d'autres termes, quel est l'algorithme de détermination de différence entre deux chaines que tu désires implanter? L'implantation en langage C ou autre n'est que la dernière étape. Pour pouvoir t'aider efficacement, nous avons besoin non seulement de savoir ce que tu veux faire, mais comment tu as prévu de le faire... Cet algorithme doit être décrit précisément et doit fonctionner sur papier avant de se lancer dans le codage.

    Où as-tu lu qu'on peut faire ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <stdio.h> <string.h> <stdlib.h>
    Lorsque tu résouds des exercices, il est très important de garder ton livre de C à proximité, de ne pas écrire n'importe quoi et de ne pas y aller au petit bonheur la chance. Pour programmer efficacement, il convient d'être précis et rigoureux. Pour cela, il y a les livres de référence et la documentation.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #3
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Voici ton morceau de code avec quelques corrections et commentaires. L'agorithme que tu essaies d'implanter ne correspond pas à la spécification de ton exercice.

    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
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
     
    /* -tc- se renseigner sur fclean() en effectuant une recherche sur le forum C */
    static void fclean(char *tampon, FILE *fp);
     
    int main (void)
    {
     
        char str1[10] = "";
        char str2[10] = "";
        int n;
     
        printf ("Entrez le 1er mot: ");
        /* -tc- fflush(stdout) est necessire pour forcer l'affichage de l'invite */
        fflush(stdout);
        fgets(str1, sizeof str1, stdin);
        fclean(str1, stdin);
     
        printf("Entrez le 2eme mot: ");
        fflush(stdout);
        fgets(str2, sizeof str2, stdin);
        fclean(str2, stdin);
     
        n = strcmp (str1, str2);
        if (n == 0)
        {
            printf ("Les chaines %s et %s sont identiques\n", str1, str2);
        }
     
        else
        {
            printf ("La chaine %s est inferieure a %s\n", (n < 0) ? str1 : str2,
                    (n < 0) ? str2 : str1);
        }
     
        return EXIT_SUCCESS;
    }
     
    /* -tc- se renseigner sur fclean() en effectuant une recherche sur le forum C */
    static void
    fclean(char *tampon, FILE *fp)
    {
        char *pc = strchr(tampon, '\n');
     
        if (pc != NULL)
        {
            *pc = 0;
        }
        else
        {
            int c;
     
            while ((c = fgetc(fp)) != '\n' && c != EOF)
            {
            }
        }
    }
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 16
    Par défaut
    merci pour votre aide

    ce que j'essaie de faire c'est :
    chaque lettre en plus , en moins , ou différente = 1 différence

    je vais essayer avec vos corrections maintenant...

  5. #5
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Les corrections apportées ne concernent que le langage C, et non la conception ou l'implantation de l'algorithme. Le code ci-dessus ne fait pas ce que tu veux.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 969
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 969
    Par défaut
    Jio,

    Comme l'a dit Thierry Chappuis, ton programme ne fait pas ce que tu veux, ou alors tu t'es mal expliqué.

    Pour la différence entre 2 chaînes il y a plusieurs algorithmes connus, un des plus simples (voire le plus simple) est la Distance de Levenshtein, tu peux en savoir plus en allant voir (entre autres) http://fr.wikipedia.org/wiki/Distance_de_Levenshtein

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 16
    Par défaut
    à quoi sert "E0F" ??
    peu importe ,
    si je résume , il me faut un algorythme qui additionne les différences entre 2 chaines de caractères

    levenshtein ?
    il y a une différence entre ça est une recherche sur strncmp...
    merci beaucoup!
    je vais voir...

Discussions similaires

  1. problème(s) de comparaison de caractère
    Par psic dans le forum Langage
    Réponses: 9
    Dernier message: 09/09/2008, 21h07
  2. problème sur comparaison de caractère
    Par temoanatini dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/02/2008, 19h18
  3. les caractères qui posent problème ..
    Par questionneuse dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 18/07/2006, 14h26
  4. Réponses: 4
    Dernier message: 05/07/2004, 13h17

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