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 :

Warning au moment de la compilation


Sujet :

C

  1. #21
    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
    Le problème lorsque l'utilisateur décide d'afficher la liste (Choix n°3 dans ton menu), c'est que cette dernière s'affiche, mais s'efface aussitôt au prochain tour de boucle lors de l'appel de menu(). La fonction pause() permet de suspendre l'exécution jusqu'à ce que l'utilisateur appuye sur la touche ENTER ( ou éventuellement sur CTRL-D sous linux ou CTRL-Z sous Windows, ce qui signifie End-Of-File ou EOF).

    La fonction purger(), comme son nom l'indique, permet de vider le tampon du flux d'entrée standard après chaque saisie. Son fonctionnement a été abondamment discuté sur ce forum et une petite recherche dans les archives t'en dira plus que de longs discours de ma part. En bref, elle lit le flux d'entrée standard caractère par caractère, tant qu'elle ne rencontre pas le caractère de fin de ligne (correspondant à une validation de saisie par la touche ENTER) ou le caractère de fin de fichier (nécessaire si l'utilisateur envoie un fichier sur le flux d'entrée standard).

    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++

    +

  2. #22
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2007
    Messages
    419
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 419
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    Le problème lorsque l'utilisateur décide d'afficher la liste (Choix n°3 dans ton menu), c'est que cette dernière s'affiche, mais s'efface aussitôt au prochain tour de boucle lors de l'appel de menu(). La fonction pause() permet de suspendre l'exécution jusqu'à ce que l'utilisateur appuye sur la touche ENTER ( ou éventuellement sur CTRL-D sous linux ou CTRL-Z sous Windows, ce qui signifie End-Of-File ou EOF).

    La fonction purger(), comme son nom l'indique, permet de vider le tampon du flux d'entrée standard après chaque saisie. Son fonctionnement a été abondamment discuté sur ce forum et une petite recherche dans les archives t'en dira plus que de longs discours de ma part. En bref, elle lit le flux d'entrée standard caractère par caractère, tant qu'elle ne rencontre pas le caractère de fin de ligne (correspondant à une validation de saisie par la touche ENTER) ou le caractère de fin de fichier (nécessaire si l'utilisateur envoie un fichier sur le flux d'entrée standard.

    Thierry
    je vois mieux maintenant, merci

    dans la fonction d'insertion:

    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
    void insertion(struct liste_event **p_tete, char s, float val)
    {
        /* -tc- programmation defensive: on s'assure de la validite des parametres */
        if (p_tete != NULL)
        {
            struct liste_event *pt1;
            struct liste_event *pt2;
            struct liste_event *event;
     
     
            pt1 = *p_tete;
     
            /* -tc- il est deconseille de convertir le type de la valeur retournee
               par malloc() */
            event = malloc(sizeof *event);
            /* -tc- il faut TOUJOURS tester si l'allocation a reussi */
            if (event != NULL)
            {
                event->type = s;
                event->temps = val;
     
                if (pt1 == NULL)
                {
                    /* insertion au debut */
     
                    event->next = pt1;
                    /* -tc- on retourne l'adresse de la tete de la liste */
                    *p_tete = event;
                }
                else
                {
                    /* -tc- on se place au debut de la liste */
                    pt2 = pt1;
                    /* -tc- ... et on parcourt toute la liste */
                    while (pt2 != NULL && pt2->temps < event->temps)
                    {
     
                        pt1 = pt2;
                        pt2 = pt2->next;
     
                    }
                    if (pt2 == *p_tete)
                    {
                        /* -tc- event->temps est le plus petit de la liste */
                        *p_tete = event;
                        event->next = pt2;
                    }
                    else
                    {
                        pt1->next = event;
                        event->next = pt2;
                    }
                }
            }
        }
    }
    le éléments sont insérés dans un ordre croissant, donc le plus petit est en premier, et dans le cas où notre nouvel élément est le plus grand, on devra l'insérer à la fin.

    (je n'ai peut être pas compris l'astuce )

  3. #23
    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
    Citation Envoyé par acacia Voir le message
    le éléments sont insérés dans un ordre croissant, donc le plus petit est en premier, et dans le cas où notre nouvel élément est le plus grand, on devra l'insérer à la fin.

    (je n'ai peut être pas compris l'astuce )
    Oui, et...? Ce n'est pas ce que fait mon code?

    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. #24
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2007
    Messages
    419
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 419
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    Oui, et...? Ce n'est pas ce que fait mon code?

    Thierry
    désolée, mais je n'ai pas compris comment se fait l'insertion à la fin.

    je pense à une ligne du genre event->next = NULL

  5. #25
    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
    Citation Envoyé par acacia Voir le message
    désolée, mais je n'ai pas compris comment se fait l'insertion à la fin.

    je pense à une ligne du genre event->next = NULL
    Lorsqu'on est à la fin de la boucle while, pt2 vaut NULL et pt1 pointe sur le dernier élément. A ce stade, on fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pt1->next = event;
    event->next = pt2;
    Ce qui signifie litéralement: "L'élément suivant pt1 devient event, et on affecte la valeur de pt2 à event->next, à savoir la valeur NULL".

    event a ainsi été inséré en queue de liste.

    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. #26
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2007
    Messages
    419
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 419
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    Lorsqu'on est à la fin de la boucle while, pt2 vaut NULL et pt1 pointe sur le dernier élément. A ce stade, on fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pt1->next = event;
    event->next = pt2;
    Ce qui signifie litéralement: "L'élément suivant pt1 devient event, et on affecte la valeur de pt2 à event->next, à savoir la valeur NULL".

    event a ainsi été inséré en queue de liste.

    Thierry
    Merci merci beaucoup, j'ai compris maintenant.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Remplacer chaînes de caractères au moment de la compilation
    Par profilien dans le forum Mise en forme
    Réponses: 2
    Dernier message: 01/09/2007, 17h06
  2. Réponses: 7
    Dernier message: 16/08/2006, 14h39
  3. Réponses: 12
    Dernier message: 26/01/2006, 14h51
  4. [Compilation] Probleme au moment de la compilation
    Par skurlat dans le forum Général Java
    Réponses: 2
    Dernier message: 08/04/2005, 21h10
  5. Réponses: 15
    Dernier message: 10/10/2002, 19h19

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