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 :

incrémenter un entier d'une cellule d'une liste


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 199
    Par défaut incrémenter un entier d'une cellule d'une liste
    Bonjour,
    encore des problèmes avec ma liste....
    Le but : l'utilisateur entre des mots ce qui crée au fur et a mesure une liste avec tous les mots entrés.
    MAIS (car il y a un mais), si le mot a déjà été entré, je dois incrémenter l'entier de la cellule au lieu de créer une nouvelle cellule de la liste.
    J'ai am fonction pour chercher le mot, mais après je vois pas comment incrémenter...
    J'ai tenté quelque chose, mais clairement ce n'est pas bon.

    Merci
    Julien

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    #include <stdio.h>
    #include <stdlib.h>
     
     
    typedef struct element element;
    struct element
    {
        char chaine[80];
        int val;
        struct element *nxt;
    };
    typedef element* llist;
     
     
    llist ajouterEnTete (llist liste, char const *mot);
    void afficherListe(llist liste);
    llist rechercherElement(llist liste, char const *mot);
     
     
    char mot[80]; 
     
     
    int main(int argc, char **argv)
    {
    llist maliste = NULL;
    element* essai = malloc(sizeof(element));
    beginning :
    printf("Please, enter a word: \n");
    fgets(mot,80,stdin);
    printf("You entered the word : %s \n",mot);
    essai=rechercherElement(maliste,mot);
    if(essai!=NULL){
    //essai->val = val+1;
    //maliste=essai;
    }
    else{
    maliste = ajouterEnTete(maliste,mot);
    }
    	printf("\n Type q to quit or Enter to continue \n");
    	char answer = getchar();
    		if(answer!='q'){
    			goto beginning;
    		} 
     
    afficherListe(maliste);
    //printf("%s ", maliste->chaine);
    //printf("%d ", maliste->val);
     
     system("PAUSE");
        return 0;
    }
     
     
     
    llist ajouterEnTete (llist liste, char const *mot){
    element* nouvelElement = malloc(sizeof(element));
    strcpy(nouvelElement->chaine,mot);
    nouvelElement->val = 1;
    //printf("jouter");
    //printf("%s ", nouvelElement->chaine);
    //printf("%d ", nouvelElement->val);
    nouvelElement->nxt = liste;
    return nouvelElement;
    }
     
     
    void afficherListe(llist liste){
        element *tmp = liste;
        //printf("%s ", tmp->chaine);
          //  printf("%d ", tmp->val);
        while(tmp != NULL){
            //printf("affich");
            printf("%s ", tmp->chaine);
            printf("%d ", tmp->val);
            tmp = tmp->nxt;
        }
     
    llist rechercherElement(llist liste, char const *mot){
    element *tmp=liste;
    while(tmp != NULL){
    if(!strcasecmp(tmp->chaine,mot)){
    	printf("Word spellt correctly");
           return tmp;
           }
       tmp = tmp->nxt;
       }
       return NULL;
    }
    }

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par juju03 Voir le message
    Bonjour,
    encore des problèmes avec ma liste....
    Le but : l'utilisateur entre des mots ce qui crée au fur et a mesure une liste avec tous les mots entrés.
    MAIS (car il y a un mais), si le mot a déjà été entré, je dois incrémenter l'entier de la cellule au lieu de créer une nouvelle cellule de la liste.
    J'ai am fonction pour chercher le mot, mais après je vois pas comment incrémenter...
    Tu cherches l'élément qui contient la chaine. Si tu le trouves, tu incrémentes le compteur de 1. C'est trivial...

    Evidemment, c'est pas
    mais
    tout simplement... ('val' pour un compteur, c'est pas terrible... pourquoi pas 'compteur' ou 'cpt' ?

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 199
    Par défaut
    Merci pour l'aide.
    Un truc me titille : j'incrémente donc essai, mais pour prendre en compte cette modification dans ma liste réelle.
    Si je fais maliste=essai; , je vais perdre le reste de ma liste. J'ai faux ??

    Sinon ben vous méritez bien que je vous invite en Suède, vu l'aide que vous me donner.
    Merci
    Julien

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par juju03 Voir le message
    Un truc me titille : j'incrémente donc essai, mais pour prendre en compte cette modification dans ma liste réelle.
    Si je fais maliste=essai; , je vais perdre le reste de ma liste. J'ai faux ??
    Il faut modifier directement l'élément de la liste. A partir du moment où tu as récupéré son adresse et que tu l'as stockée dans un pointeur, tu accède à cet élément et à tous les champs.
    Sinon ben vous méritez bien que je vous invite en Suède, vu l'aide que vous me donner.
    Avec plaisir.

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 199
    Par défaut
    Rebonsoir,
    je n'arrive pas à utiliser la methode rechercherElement : j'ai une erreur undefined reference to 'rechercherElement'.

    Et sinon quand j'obtiens mon "essai", pour changer juste la cellule de ma liste, j'ai juste à modifier essai ????

    Merci

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    #include <stdio.h>
    #include <stdlib.h>
     
     
    typedef struct element element;
    struct element
    {
        char chaine[80];
        int val;
        struct element *nxt;
    };
    typedef element* llist;
     
     
    llist ajouterEnTete (llist liste, char const *mot);
    void afficherListe(llist liste);
    llist rechercherElement(llist liste, char const *mot);
     
     
    char mot[80]; 
     
     
    int main(int argc, char **argv)
    {
    llist maliste = NULL;
    element* essai = malloc(sizeof(element));
    beginning :
    printf("Please, enter a word: \n");
    fgets(mot,80,stdin);
    printf("You entered the word : %s \n",mot);
    essai=rechercherElement(maliste,mot);
    //if(essai!=NULL){
    //essai->val++;
    //maliste=essai;
    //}
    //else{
    maliste = ajouterEnTete(maliste,mot);
    //}
    printf("\n Type q to quit or Enter to continue \n");
    char answer = getchar();
    if(answer!='q'){
    	goto beginning;
    } 
     
     
    afficherListe(maliste);
    //printf("%s ", maliste->chaine);
    //printf("%d ", maliste->val);
     
     system("PAUSE");
        return 0;
    }
     
     
     
    llist ajouterEnTete (llist liste, char const *mot){
    element* nouvelElement = malloc(sizeof(element));
    strcpy(nouvelElement->chaine,mot);
    nouvelElement->val = 1;
    //printf("jouter");
    //printf("%s ", nouvelElement->chaine);
    //printf("%d ", nouvelElement->val);
    nouvelElement->nxt = liste;
    return nouvelElement;
    }
     
     
    void afficherListe(llist liste){
        element *tmp = liste;
        int i=0,MAX=1;
         // while(tmp != NULL){
     
         // }
        //printf("%s ", tmp->chaine);
          //  printf("%d ", tmp->val);
          //while(i<=10){
        while(tmp != NULL){
            //printf("affich");
            printf("%s ", tmp->chaine);
            printf("%d ", tmp->val);
            tmp = tmp->nxt;
    //}
     
        //tmp=liste;
    }
     
    llist rechercherElement(llist liste, char const *mot){
    element *tmp=liste;
    while(tmp != NULL){
    if(!strcasecmp(tmp->chaine,mot)){
    	printf("Word spellt correctly");
           return tmp;
           }
       tmp = tmp->nxt;
       }
       return NULL;
    }
    }

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par juju03 Voir le message
    je n'arrive pas à utiliser la methode rechercherElement : j'ai une erreur undefined reference to 'rechercherElement'.
    Pas de 'methode' en C. Uniquement des fonctions.

    Il faut placer les fonctions dans le fichier source de façon à ce qu'elles soient définies avant leur usage...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void f(int a)
    {
    }
     
    void g(void)
    {
       f(3);
    }
    Et sinon quand j'obtiens mon "essai", pour changer juste la cellule de ma liste, j'ai juste à modifier essai ????
    Si 'essai' pointe sur l'élément à modifier, oui. Tu fais ce que je t'ai déjà indiqué...

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  3. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  4. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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