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 :

parking garage


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 36
    Par défaut parking garage
    bonjour ceci est un programme de parking, il permet de faire entrer les voiture dans le paking, quand le parking est rempli , il y a une liste d`attente qui est etabli, et le programme permet de faire partir des voites de la liste d`attente egalement...mon probleme c`est que juste apres avoir enlever une voiture dans la liste d`attente le programme ne continue plus et je n`arrive pas a comprendre pourquoi....j`esperes que cette foici j`ai bien represente le rpogramme "indulation"...
    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
     
    ceci est le contenu du fichier a lire:
    a 2
    a 3
    a 4
    a 5
    a 6
    a 7
    d 4
    d 6
    d 2
    a 8
    a 10
    a 12
    a 132
    a 324
    a 342
    d 5
    d 132
    a 21
    a 38
    a 4
    d 10
    a 99
    a 55
    a 15
    a 30
    a 40
    d 30
    d 12
    d 7
    a 70
    a 80
    d 38
    d 324
    d 342
    ce ci est le programme
    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
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <malloc.h>
    struct nodetype
    {
     int no;
     struct nodetype *prev, *next;
    };
     
    typedefstruct nodetype node;
    int qempty(node*);
    node* qinsert(node*, node*, int);
    void showq(node*);
    node* qremove(node*, int*);
    void main(void);
    
    int qempty(node* qfront)
      {
    return (qfront == NULL);
      }
     
    node* qinsert(node* qfront, node* qrear, int x)
      {
        node *p;
        p = new(node);
        p->no = x; 
        p->next = NULL;
    if (qfront == NULL)
        p->prev = NULL;
    else
        {
              qrear->next = p;
              p->prev = qrear;
            }
    return (p); 
      }
    
    void showq(node* qfront)
      {
          node *p;
          p = qfront;
      while (p != NULL)
              {
                printf("%d ", p->no);
                p = p->next;
              }
         printf("\n");
      }
     
    node* qremove(node* qfront, int* x)
     {
        node *p;
    if (!qempty(qfront))
             {
               p = qfront;
              *x = p->no;
               qfront = qfront->next;
           if (qfront != NULL) qfront->prev = NULL;
               free (p);
             }
     return (qfront); 
     }
     
    void main(void)
     {
    char code;
       node *qfront=NULL, *qrear=NULL;
       node *waitqfront=NULL, *waitqrear=NULL;
    int dataIn;
    int no=0;
    int max=0;
       FILE *ifile;
     
       ifile=fopen("H:\\CIS211\\TLU\\GARAGEBONUS.TXT", "r");
     
    while (fscanf(ifile, " %c %d", &code,&dataIn) != EOF)
       {
         printf("%c %d\n",code,dataIn);
     if (code == 'a')
          {
       if(max<10)
              {
     
                printf("Car %d entered the parking garage.\n",dataIn);
                qrear = qinsert(qfront,qrear,dataIn);
            if(qfront == NULL) qfront = qrear;
                max++;
                showq(qfront);
            if (!qempty(waitqfront))
                   {
                     printf("Waiting queue: ");
                     showq(waitqfront);
                   }
     
              }
      else
         {
              waitqrear=qinsert(waitqfront, waitqrear, dataIn);
          if(waitqfront == NULL) waitqfront = waitqrear;
              showq(qfront);
              printf("Waiting queue: ");
              showq(waitqfront); 
            }
          }
      else
         {
           if (code == 'd')
                  { 
                if(!qempty(qfront))
                      {
     
                    while (qfront->no != dataIn)
                         {
                            qfront = qremove(qfront,&no);
                         if(qfront == NULL) qrear = NULL;
                             qrear = qinsert(qfront,qrear,no);
     
                          }
                         printf("Car %d left the parking garage.\n",qfront->no);
                         qfront = qremove(qfront,&no);
                         max--;
                     if (!qempty(waitqfront))
                            {
                              waitqfront=qremove(waitqfront,&no);
                              qrear=qinsert(qfront, qrear, no);
                              max++; 
                            }
                            showq(qfront);
                        if (!qempty(waitqfront))
                              {
                                printf("Waiting queue: ");
                                showq(waitqfront);
                              } 
                     } 
                  }
             }
    getch();
       }
     fclose(ifile); 
     getch(); 
     }
    
    merci de votre aide...
    SMALTO....

  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 smalto
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    typedefstruct nodetype node;
    
    Ne compile pas. Merci de copier/coller...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef struct nodetype node;

    Citation Envoyé par smalto
    pas du C...

  3. #3
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 36
    Par défaut je suis confus
    j`ai ajoute le message au forum du c++, on ma ramene vers le c et maintenant tu me dis que ce n`est pas du C. la formation que je fais comprend C et C++. et ceux la sont des examples de classe sur lesquelles j`ai travaille, donc je suis confus et l`impression de n`avoir rien aprris alors....
    merci de votre aide tout de meme...
    SMALTO

  4. #4
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    C'est à 99% du C.
    On ne peut pas vraiment parler de classe ici.

  5. #5
    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 smalto
    j`ai ajoute le message au forum du c++, on ma ramene vers le c et maintenant tu me dis que ce n`est pas du C. la formation que je fais comprend C et C++. et ceux la sont des examples de classe sur lesquelles j`ai travaille, donc je suis confus et l`impression de n`avoir rien aprris alors....
    Bel exemple de confusion.

    C et C++ sont 2 langages différents. Il faut choisir lequel tu utilises, et effectivement, c'est pas du tout une bonne idée d'apprendre les deux en même temps.

    Je te conseille d'en choisir un et de t'y tenir exclusivement pendant une période significative (6 mois à un an). Ensuite, tu pourras aborder l'autre si nécessaire. Mais la séparation entre les deux doit être parfaitement claire, sinon, tu vas droit dans le mur.

    http://david.tribble.com/text/cdiffs.htm

  6. #6
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    (6 mois à un an).
    C'est peut être un peu long.
    Ce qu'il faut c'est s'obliger à programmer 100% C ou 100% C++ et ne pas tomber dans certaines facilité du type:"je sais faire ça en C je vais donc le mettre dans un prog C++".
    Il faut se forcer à apprendre ce que l'on ne sait pas dans l'un et l'autre langage.

  7. #7
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 36
    Par défaut bien compris....
    en dehors de ce qui suit pouvez vous m`aider, car typedef struct est seulemnt l`identification de structure comme je crois vous vous en doutez. concernant |p=new(node)| cela cree une nouvelle node c`est tout.
    si vous comprenez tout le reste aidez moi, s`il vous plait.....
    Citation Envoyé par Emmanuel Delahaye
    Ne compile pas. Merci de copier/coller...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef struct nodetype node;


    pas du C...
    SMALTO....

  8. #8
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    "main" retourne "int" et inutile de le déclarer, c'est le point d'entrée du programme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct nodetype
    {
     int no;
     struct nodetype *prev, *next;
    };
     
    typedefstruct nodetype node;
    Peut se simplifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct
    {
     int no;
     struct node *prev, *next;
    }node;

  9. #9
    Membre éprouvé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Par défaut
    Citation Envoyé par smalto

    while (qfront->no != dataIn)
    {
    qfront = qremove(qfront,&no);
    if(qfront == NULL) qrear = NULL;
    qrear = qinsert(qfront,qrear,no);
    }

    [/code]
    pour ma part, je ne comprends pas le fonctionnement de ta boucle while.

    si, ce que tu veux, c'est supprimer les "d" la, pour moi, tu supprime tout!!!

  10. #10
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 36
    Par défaut parfait....
    Citation Envoyé par doudouallemand
    Citation:
    smalto a écrit :

    while (qfront->no != dataIn)
    {
    qfront = qremove(qfront,&no);
    if(qfront == NULL) qrear = NULL;
    qrear = qinsert(qfront,qrear,no);
    }

    [/code]



    pour ma part, je ne comprends pas le fonctionnement de ta boucle while.

    si, ce que tu veux, c'est supprimer les "d" la, pour moi, tu supprime tout!!!
    non cela ne supprime pas tout il supprime seulement la valeur a l`adresse de no.....tout marche parfaitement comme je le disais, le suel problem c`est que arriver a d 30 dasn la liste waiting, le programme ne continue plus....
    SAMLTO.....

  11. #11
    Membre éprouvé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Par défaut
    ben, je ne sais pas alors, je ne vois pas d'erreur dans le code en tout cas...

    avis a ceux qui aurait des reponses...

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