Partage
  • Partager sur Facebook
  • Partager sur Twitter

Liste liée

Exercice base de donnée

    9 mars 2008 à 0:40:33

    Quelqu'un saurait-il m'aider en trouvant les fautes, et m'ider a les corriger. Tous ce qu'il faut savoir sur le programme est dans le commentaire. La liste liée n'est pas complete mais je ne sais pas exactement comment la faire.
    1. /* Ce programme affiche l'invite New key et lit un nombre décimal, puis affiche
    2.  * l'invite New value et lit une chaine de caractères. Aprés cela il affiche
    3.  * de nouveau ces deux invite, et ainsi de suite jusqu'a ce que l'utilisateur
    4.  * entre une clé égale à 0. Toutes les données sont conservées dans une liste
    5.  * liée. Quand la clé vaut zero, l'invite Old key lit un nombre décimal et le
    6.  * programme affiche Old value et la valeur associée a la clé. Rien n'est
    7.  * afficher si la clé n'existe pas. Le programme se termine lorsque old key
    8.  * vaut zéro.
    9.  */
    10. #include <stdio.h>
    11. #include <stdlib.h>
    12. int main(){
    13.   typedef struct listeL_t {
    14.     int pointeursurkey* int key;
    15.     char pointeursurvalue* char value[21];
    16.     struct listeL_t* next;
    17.   }listeL;
    18.   struct *pointeur1, *pointeur2;
    19.   int key;
    20.   char value;
    21.   do{
    22.     listeL = (listeL*)malloc(sizeof(*listeL));
    23.     printf("New key:\n");
    24.     scanf("%d", listeL.key);
    25.     if(key != 0){
    26.       printf("New value:\n");
    27.       fgets(value, 21, stdin);
    28.     }
    29.     else
    30.       *listeL.value = NULL;
    31. pointeur1
    32.   }while(*listeL.key != 0);
    33.   do{
    34.     printf("Old key: ");
    35.     scanf("%d", *listeL.key);
    36.     if(key != 0){
    37.       printf("Old value: \n");
    38.       printf("'%s'\n", *listeL.value);
    39.     }
    40.   }while (*listeL.key != 0);
    41.   return 0;
    42. }



    Voici ce que dit le compilateur:
    In function «main":
    db.c:19: erreur: expected «:", «,", «;", «}" or «__attribute__" before «*" token
    db.c:22: attention : struct has no members
    db.c:24: erreur: expected «{" before «*" token
    db.c:30: erreur: expected identifier or «(" before «=" token
    db.c:33: erreur: expected expression before «listeL"
    db.c:37: attention : passing argument 1 of «fgets" makes pointer from integer without a cast
    db.c:40: erreur: expected expression before «listeL"
    db.c:42: erreur: expected expression before «listeL"
    db.c:46: erreur: expected expression before «listeL"
    db.c:50: erreur: expected expression before «listeL"
    db.c:52: erreur: expected expression before «listeL"

    • Partager sur Facebook
    • Partager sur Twitter
      9 mars 2008 à 0:49:16

      Fais un effort de présentation (balises, indentation, ...) ensuite on verra ...
      • Partager sur Facebook
      • Partager sur Twitter
        9 mars 2008 à 0:50:31

        En vrai l'effort est vrai mais quand je poste sur le forum comment je dois faire?
        • Partager sur Facebook
        • Partager sur Twitter
          9 mars 2008 à 0:57:01

          tu utilises les balises Zcode
          (situées en haut à gauche de la zone d'édition de message)

          c'est qqc du genre :

          1. <code type="c"> </code>


          et voilà ;)
          • Partager sur Facebook
          • Partager sur Twitter
            9 mars 2008 à 2:03:20

            Citation : TheKingDavid



            Voici ce que dit le compilateur:

            In function «main":
            db.c:19: erreur: expected «:", «,", «;", «}" or «__attribute__" before «*" token



            Très bien de nous transmettre les messages du compilateur mais as-tu regardé où le premier message te renvoyait ? À la ligne 19. Donc tu regardes à la ligne 19 de ton code source et tu verras une erreur idiote que tu corrigeras puis tu recompileras et passeras au premier message que te renverra la nouvelle compilation. Aide-toi, le sdz t'aidera !
            • Partager sur Facebook
            • Partager sur Twitter
              9 mars 2008 à 10:38:08

              Voila j'ai effectivement vu un bete erreur que je pense avoir modifier mais maintenant je me retrouve avec une erreur similaire que je ne trouve pas

              1. typedef struct listeL_t {
              2.     int* pointeurSurKey = &key;
              3.     char* pointeurSurValue =  &value[21];
              4.     struct listeL_t* next;
              5.   }listeL;


              db.c:19: erreur: expected «:", «,", «;", «}" or «__attribute__" before «=" token


              la ligne 19 est : int* pointeurSurKey = &int key;
              • Partager sur Facebook
              • Partager sur Twitter
                9 mars 2008 à 10:54:32

                Citation : TheKingDavid

                Voila j'ai effectivement vu un bete erreur que je pense avoir modifier


                Pourrais-tu déjà poster ton code corrigé par toi-même (code complet, pas un extrait)?
                • Partager sur Facebook
                • Partager sur Twitter
                  9 mars 2008 à 11:05:05

                  Bien sur que je peux le faire, dsl. Voila.

                  1. /* Ce programme affiche l'invite New key et lit un nombre décimal, puis affiche
                  2.  * l'invite New value et lit une chaine de caractères. Aprés cela il affiche
                  3.  * de nouveau ces deux invite, et ainsi de suite jusqu'a ce que l'utilisateur
                  4.  * entre une clé égale à 0. Toutes les données sont conservées dans une liste
                  5.  * liée. Quand la clé vaut zero, l'invite Old key lit un nombre décimal et le
                  6.  * programme affiche Old value et la valeur associée a la clé. Rien n'est
                  7.  * afficher si la clé n'existe pas. Le programme se termine lorsque old key
                  8.  * vaut zéro.
                  9.  */
                  10. #include <stdio.h>
                  11. #include <stdlib.h>
                  12. int main(){
                  13.   typedef struct listeL_t {
                  14.     int* pointeurSurKey = &key;
                  15.     char* pointeurSurValue =  &value[21];
                  16.     struct listeL_t* next;
                  17.   }listeL;
                  18.   struct *pointeur1, *pointeur2;
                  19.   int key;
                  20.   char value;
                  21.   do{
                  22.     listeL = (listeL*)malloc(sizeof(*listeL));
                  23.     printf("New key:\n");
                  24.     scanf("%d", listeL.key);
                  25.     if(key != 0){
                  26.       printf("New value:\n");
                  27.       fgets(value, 21, stdin);
                  28.     }
                  29.     else
                  30.       *listeL.value = NULL;
                  31.     pointeur1
                  32.       }while(*listeL.key != 0);
                  33.   do{
                  34.     printf("Old key: ");
                  35.     scanf("%d", *listeL.key);
                  36.     if(key != 0){
                  37.       printf("Old value: \n");
                  38.       printf("'%s'\n", *listeL.value);
                  39.     }
                  40.   }while (*listeL.key != 0);
                  41.   return 0;
                  42. }

                  db.c: In function «main":
                  db.c:19: erreur: expected «:", «,", «;", «}" or «__attribute__" before «=" token
                  db.c:22: attention : struct has no members
                  db.c:24: erreur: expected «{" before «*" token
                  db.c:31: erreur: expected identifier or «(" before «=" token
                  db.c:34: erreur: expected expression before «listeL"
                  db.c:38: attention : passing argument 1 of «fgets" makes pointer from integer without a cast
                  db.c:41: erreur: expected expression before «listeL"
                  db.c:43: erreur: «pointeur1" undeclared (first use in this function)
                  db.c:43: erreur: (Each undeclared identifier is reported only once
                  db.c:43: erreur: for each function it appears in.)
                  db.c:44: erreur: expected «;" before «}" token
                  db.c:44: erreur: expected expression before «listeL"
                  db.c:48: erreur: expected expression before «listeL"
                  db.c:52: erreur: expected expression before «listeL"
                  db.c:54: erreur: expected expression before «listeL"



                  • Partager sur Facebook
                  • Partager sur Twitter
                    9 mars 2008 à 11:35:32

                    Citation : TheKingDavid


                    1. typedef struct listeL_t {
                    2.     int* pointeurSurKey = &key;
                    3.     char* pointeurSurValue =  &value[21];
                    4.     struct listeL_t* next;
                    5.   }listeL;



                    Pas du C. On ne peut pas initialiser quoique ce soit dans une définition de structure...

                    Je recommande une plus grande cohérence dans la présentation et dans le choix des identificateurs :
                    1. typedef struct node
                    2. {
                    3.    int* pKey;
                    4.    char* pValue;
                    5.    struct node* pNext;
                    6. }
                    7. node_s;
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Music only !
                      9 mars 2008 à 11:44:27

                      1. typedef struct listeL_t {
                      2.     int* pointeurSurKey = &key;
                      3.     char* pointeurSurValue =  &value[21];
                      4.     struct listeL_t* next;
                      5.   }listeL;


                      En effet, tu ne peux pas initialiser comme ça. Il te faut écrire dans une fonction où tu utilises une structure toto de type listeL quelque chose du genre

                      1. toto.pointeurSurKey=&key;
                      • Partager sur Facebook
                      • Partager sur Twitter
                        9 mars 2008 à 11:48:48

                        Effectivement je ne dois pas initialiser dans la structure. Mais vu que j'ai beaucoup d'erreur j'ai encore des question.
                        Pourquoi utilise tu node???
                        Maintenant mon code ressemble a ça:
                        1. #include <stdio.h>
                        2. #include <stdlib.h>
                        3. int main(){
                        4.   typedef struct listeL_t {
                        5.     int* pKey;
                        6.     char* pValue;
                        7.     struct listeL_t* next;
                        8.   }listeL;
                        9.   struct *pointeur1, *pointeur2;//c'est celle ci ma ligne 24
                        10.   int key;
                        11.   char value;
                        12.   do{
                        13.     listeL = (listeL*)malloc(sizeof(*listeL));
                        14.     printf("New key:\n");
                        15.     scanf("%d", listeL.key);
                        16.     if(key != 0){
                        17.       printf("New value:\n");
                        18.       fgets(value, 21, stdin);
                        19.     }
                        20.     else
                        21.       *listeL.value = NULL;
                        22.     pointeur1
                        23.       }while(*listeL.key != 0);
                        24.   do{
                        25.     printf("Old key: ");
                        26.     scanf("%d", *listeL.key);
                        27.     if(key != 0){
                        28.       printf("Old value: \n");
                        29.       printf("'%s'\n", *listeL.value);
                        30.     }
                        31.   }while (*listeL.key != 0);
                        32.   return 0;
                        33. }


                        db.c: In function «main":
                        db.c:24: erreur: expected «{" before «*" token
                        db.c:31: erreur: expected identifier or «(" before «=" token
                        db.c:34: erreur: expected expression before «listeL"
                        db.c:38: attention : passing argument 1 of «fgets" makes pointer from integer without a cast
                        db.c:41: erreur: expected expression before «listeL"
                        db.c:43: erreur: «pointeur1" undeclared (first use in this function)
                        db.c:43: erreur: (Each undeclared identifier is reported only once
                        db.c:43: erreur: for each function it appears in.)
                        db.c:44: erreur: expected «;" before «}" token
                        db.c:44: erreur: expected expression before «listeL"
                        db.c:48: erreur: expected expression before «listeL"
                        db.c:52: erreur: expected expression before «listeL"
                        db.c:54: erreur: expected expression before «listeL"


                        • Partager sur Facebook
                        • Partager sur Twitter
                          9 mars 2008 à 12:07:15

                          Citation : TheKingDavid

                          Pourquoi utilise tu node???


                          Parce qu'il s'agit très exactement de ça. Un node (ou noeud) de liste.

                          On pourrait préciser 'list_node' ou 'double_list_node' ou 'dll_node' etc. si nécessaire...

                          Citation : Pas de titre

                          1. struct *pointeur1, *pointeur2;//c'est celle ci ma ligne 24
                          Pas du C (pas d'identificateur de type). Quelle est ton intention avec cette ligne ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Music only !
                            9 mars 2008 à 12:11:56

                            Ok, merci pour les explication du node.
                            db.c:24: erreur: expected «{" before «*" token

                            Mon intention avec la ligne est lié a ce message d'erreur, bien que j'ai du faire une bete faute je ne comprend pas laquelle
                            • Partager sur Facebook
                            • Partager sur Twitter
                              9 mars 2008 à 12:15:50

                              Citation : TheKingDavid

                              Ok, merci pour les explication du node.

                              db.c:24: erreur: expected «{" before «*" token


                              Mon intention avec la ligne est lié a ce message d'erreur, bien que j'ai du faire une bete faute je ne comprend pas laquelle


                              La faute a déjà été indiquée : pas de type.

                              Ce que je veux savoir c'est ce que tu as voulu faire. Apparemment, définir deux pointeurs, mais de quels types ? 'struct' tout seul n'est pas un type...
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Music only !
                                9 mars 2008 à 12:37:55

                                En fait je veux créer deux pointeurs pour pouvoir faire ma liste.
                                Un pointeur d'entrée, et l'autre je ne sais plus trop a quoi il va me servir.(Pour insérer les nouveaux éléments?)
                                Et j'ai mis struct, car la liste liée on l'utilise avec une structure, celle que j'ai mis en haut du programme?

                                Edit: ok, besoin que de 1 pointeurs: J'ai tjs des erreurs:
                                1. /* Ce programme affiche l'invite New key et lit un nombre décimal, puis affiche
                                2.  * l'invite New value et lit une chaine de caractères. Aprés cela il affiche
                                3.  * de nouveau ces deux invite, et ainsi de suite jusqu'a ce que l'utilisateur
                                4.  * entre une clé égale à 0. Toutes les données sont conservées dans une liste
                                5.  * liée. Quand la clé vaut zero, l'invite Old key lit un nombre décimal et le
                                6.  * programme affiche Old value et la valeur associée a la clé. Rien n'est
                                7.  * afficher si la clé n'existe pas. Le programme se termine lorsque old key
                                8.  * vaut zéro.
                                9.  */
                                10. #include <stdio.h>
                                11. #include <stdlib.h>
                                12. int main(){
                                13.   struct listeL {
                                14.     int Key;
                                15.     char Value;
                                16.     struct node* pnext;
                                17.   };
                                18.   struct listeL* pointeur1 = (struct listeL*)malloc(sizeof(struct listeL));
                                19.   int key;
                                20.   char* value;  
                                21.   printf("New key:\n");
                                22.   scanf("%d", &key);
                                23.   listeL.Key = &key;
                                24.   if(key != 0){
                                25.     printf("New value:\n");
                                26.     fgets(value, 21, stdin);
                                27.     listeL.Value = &value;
                                28.     listeL.pnext = NULL;
                                29.   }
                                30.   else
                                31.     listeL.Value = NULL;
                                32.   while(key != 0){
                                33.     struct listeL* pointeur1 = (struct listeL*)malloc(sizeof(struct listeL));  
                                34.     printf("New key:\n");
                                35.     scanf("%d", &key);
                                36.     listeL.Key = &key;
                                37.     if(key != 0){
                                38.       printf("New value:\n");
                                39.       fgets(value, 21, stdin);
                                40.       listeL.Value = &value;
                                41.       listeL.pnext = listeL;
                                42.     }
                                43.     else
                                44.       listeL.Value = NULL;
                                45.   }
                                46.   do{
                                47.     printf("Old key: ");
                                48.     scanf("%d", *listeL.key);
                                49.     if(key != 0){
                                50.       printf("Old value: \n");
                                51.       printf("'%s'\n", *listeL.value);
                                52.     }
                                53.   }while (*listeL.key != 0);
                                54.   return 0;
                                55. }

                                db.c: In function «main":
                                db.c:31: erreur: «listeL" undeclared (first use in this function)
                                db.c:31: erreur: (Each undeclared identifier is reported only once
                                db.c:31: erreur: for each function it appears in.)
                                db.c:45: attention : unused variable «pointeur1"
                                db.c:24: attention : unused variable «pointeur1"
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Liste liée

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown