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 :

FIFO circulaire en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Par défaut FIFO circulaire en C
    salut,
    j'ai besoin de coder une fifo (first in first out) cerculaire comme dans cet exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /*
    *0 1 2 3 4 X X *ecrire -> 0 1 2 3 4 5 X *lire -> X 1 2 3 4 5 X
    *ecrire -> X 1 2 3 4 5 6
    *ecrire -> 7 1 2 3 4 5 6 -> fifo completo
    *lire -> 7 X 2 3 4 5 6 -> ok
    */
    j'ai penser a une liste chainée donc j'ai fait ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
    // je definis une liste chainée
    struct element {
    int valor
    struct element *next;
     
    };
     
    element *liste;// ma FIFO
    element *Pecrire;//Pointeur sur la fin de la liste la ou il faut ecrir
    element *lire;//Pointeur sur le debut de la liste la ou il faut lire
    maintenant il me faut une fonction "ecrire" et "lire" mais j'arrive pas a voir comment faire vu qu'il y a trop de pointeur

    merci d'avance

    rachid:faire de l'info à madrid n'est pas du tt une bonne idée

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Salut et bienvenue sur les forums de developpez.com


    Bon vu que pour le moment tu n'as encore rien sauf une petit définition de structure, tu peux commencer par lire ceci: http://nicolasj.developpez.com/articles/file/
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Nouveau candidat au Club
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Par défaut
    merci énormément,
    je vais essayer de me planger dans cet article même si le mot "liste doublement chaînée" me fait déja peur

    gracias

  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 rachy
    j'ai besoin de coder une fifo (first in first out) cerculaire comme dans cet exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /*
    *0 1 2 3 4 X X *ecrire -> 0 1 2 3 4 5 X *lire -> X 1 2 3 4 5 X
    *ecrire -> X 1 2 3 4 5 6
    *ecrire -> 7 1 2 3 4 5 6 -> fifo completo
    *lire -> 7 X 2 3 4 5 6 -> ok
    */
    j'ai penser a une liste chainée donc j'ai fait ça
    Euh, pourquoi ? Une FIFO, est une FIFO, ce n'est pas une 'liste circulaire. Quand à une FIFO circulaire, il va falloir m'expliquer ce que c'est. Une FIFO est un tampon circulaire (ring buffer). Que serait un "tampon circulaire circulaire" ? Il va falloir vérifier ses définitions de structures de données...

    C'est essentiellement un tableau de données d'une taille définie et fixe, 2 index (ou pointeurs), un en lecture, un en écriture et 2 drapeaux (vide, plein).

    Pour gérer ça, on a une fonction de lecture qui écrit et ajoute une donnée dans le tableau si la FIFO n'est pas pleine, une fonction de lecture qui lit et retire une donnée si la FIFO n'est pas vide, et 2 fonctions d'état qui indiquent vide ou plein...

    http://emmanuel-delahaye.developpez.com/clib.htm
    Module FIFO

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Euh, pourquoi ? Une FIFO, est une FIFO, ce n'est pas une 'liste circulaire. Quand à une FIFO circulaire, il va falloir m'expliquer ce que c'est. Une FIFO est un tampon circulaire (ring buffer). Que serait un "tampon circulaire circulaire" ? Il va falloir vérifier ses définitions de structures de données...
    Pas vraiment, une pile est une FIFO, mais n'a rien de circulaire...

    Pour le reste, je suis complètement d'accord.

  6. #6
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Citation Envoyé par DaffyDuck
    Pas vraiment, une pile est une FIFO...
    Selon moi, une pile est plutôt une LIFO, non?

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par stephl
    Selon moi, une pile est plutôt une LIFO, non?
    FIFO = File
    LIFO = Pile

    ... donc oui
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  8. #8
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Citation Envoyé par Franck.H
    FIFO = File
    LIFO = Pile

    ... donc oui
    Le ", non?" était plus rhétorique qu'autre chose; néanmoins, merci d'avoir confirmé!

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Franck.H
    FIFO = File
    LIFO = Pile

    ... donc oui
    comme quoi l'informatique est illogique :

    FIRST IN FIRST OUT c'est plûtot ce qui se passe sur une pile de papiers non ?

    Alors que LAST IN FIRST OUT c'est plûtot ce qui se passe dans une file au guichet non ?


  10. #10
    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 DaffyDuck
    Pas vraiment, une pile est une FIFO,
    Une pile est une LIFO.

  11. #11
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Euh, pourquoi ? Une FIFO, est une FIFO, ce n'est pas une 'liste circulaire. Quand à une FIFO circulaire, il va falloir m'expliquer ce que c'est. Une FIFO est un tampon circulaire (ring buffer). Que serait un "tampon circulaire circulaire" ? Il va falloir vérifier ses définitions de structures de données...
    On peut faire des FIFO avec autre chose qu'un tampon circulaire (par exemple des listes chainees) et on peut utiliser des tampons circulaires pour autre chose que des FIFO (par exemple des deque).

  12. #12
    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 Jean-Marc.Bourguet
    On peut faire des FIFO avec autre chose qu'un tampon circulaire (par exemple des listes chainees) et on peut utiliser des tampons circulaires pour autre chose que des FIFO (par exemple des deque).
    On peut tout faire. Mais ce n'est pas forcément adapté.

    Une liste chainée double pour une pile, c'est faisable. Est-ce souhaitable ?

  13. #13
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Une liste chainée double pour une pile, c'est faisable. Est-ce souhaitable ?
    A priori je prendrais une liste chainee simple si c'est vers ca que je vais. C'est souhaitable si on n'a pas de borne a priori de la taille des donnees a y mettre, ou si il y a une forte variation imprevisible et qu'on ne veut pas occuper de la memoire quand il n'y a rien dedans, ou...

    Le point etait surtout que FIFO, LIFO ce sont des structures abstraires, definies par des operations possibles, tampon circulaire, c'est une structure concrete, utilisable comme implementation pour des structures abstraires classique ou pour autre chose.

  14. #14
    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 Jean-Marc.Bourguet
    A priori je prendrais une liste chainee simple si c'est vers ca que je vais.
    Simple ? comme tu dépiles ? Tu reparcours tout jusqu'au n-1 à chaque fois ?
    Rendez moi mon tableau et mon index...
    C'est souhaitable si on n'a pas de borne a priori de la taille des donnees a y mettre, ou si il y a une forte variation imprevisible et qu'on ne veut pas occuper de la memoire quand il n'y a rien dedans, ou...
    realloc() est mon ami.

Discussions similaires

  1. FIFO circulaire en VHDL
    Par binome-x dans le forum VHDL
    Réponses: 2
    Dernier message: 06/03/2015, 13h31
  2. problème de fifo bloquant sous linux
    Par Fonzy007 dans le forum POSIX
    Réponses: 6
    Dernier message: 20/05/2009, 09h44
  3. Calcul d'un mouvement circulaire
    Par Hyoga dans le forum OpenGL
    Réponses: 2
    Dernier message: 17/01/2005, 11h36
  4. garder un FIFO ouvert en lecture
    Par OuiOui dans le forum Réseau
    Réponses: 4
    Dernier message: 05/01/2003, 19h24
  5. Recherche code d'un fifo,ou explication
    Par don-diego dans le forum C
    Réponses: 8
    Dernier message: 25/07/2002, 10h26

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