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 :

Création de tampon


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut Création de tampon
    Bonsoir!

    Je tente de faire un petit exo dans lequel on propose de simuler la création d'un buffer circulaire. Pour ce faire, on désire se servir d'un liste chaînée de cellules (contenant chacune un entier positif) et un tampon permettant d'accéder à l'ensemble de ces cellules.

    Dans un premier temps, on demande de donner le code pour représenter une cellule, et d'en déduire le type d'un variable tampon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct cellule {
       int i;
       struct cellule * suiv;
    }
    Qu'en pensez-vous? Concernant le type de tampon, j'aurais dit de type structure également, mais pas sûr.. et si oui, pourquoi? :o

    Ensuite, il s'agit de faire une fonction permettant de créer un tampon pouvant stocker n éléments entiers. Là je bloque un peu.. Comme prototype de fonction, je serais parti sur le modèle suivant, mais sans conviction...:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struct cellule * creer_tampon(int nb_cellules);
    Qu'en pensez-vous?

    Merci d'avance!

  2. #2
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    struct cellule {
       int i;
       struct cellule * suiv;
    }
    On pourrait rajouter un typedef pour eviter de retaper struct :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    typedef struct cellule cellule;
    struct cellule 
    {
       int information;
       cellule *suivante;
    }

    Pour l'histoire du tampon .... je suppose que c'est juste une structure permettant de gerer la liste doublement chainé , donc ceci est ma proposition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef struct tampon tampon;
    struct tampon
    {
        cellule *uneCellule;
    };
    Apres, il y a plein de chose que l'on peut rajouter : le nombre de cellule presente (pour se simplifier la vie), un nombre max de cellule (pour eviter d'exploser le "Tampon") .... etc etc.

    Il y avait eu une conversation sur les liste circulaire ... j'editerai en mettant le lien si je le retrouve.

    EDIT : le voici
    http://www.developpez.net/forums/d82...r-utilisation/

  3. #3
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut
    Ok, merci pour ta réponse. Par contre, je ne pense pas qu'il s'agisse de liste doublement chaînée dans ce cas.. Du moins, on doit pouvoir faire avec une simplement chaînée.

    Concernant la fonction permettant de créer un tampon que j'ai évoquée, qu'en penses-tu? Petite précision: il est précisé qu'on pourra utiliser le fait que les entiers stockés sont positifs en mettant une valeur négative dans la cellule pour exprimer qu'elle n'est pas utilisée.

  4. #4
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Ah, donc tu voudrais creer un tampon de taille fixer au debut ?

    Si la taille de ce tampon n'est pas destiner a evoluer ensuite, tu peux te passer de la liste chainé. Tu alloue juste un tableau dynamique.

    Sinon, doublement ou simplement chainé, c'est "'quasiment'" pareille.

  5. #5
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut
    En effet, la taillon du tampon, comme je l'ai précisé, serait de taille n fixée.
    Au vu de l'énoncé, je pense qu'on attend que j'utilise un ensemble chaîné de cellules et un tampon. La représentation ci-dessous l'illustre bien:



    Ainsi, je te repose la même question que précédemment...

  6. #6
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struct cellule * creer_tampon(int nb_cellules);
    Oui, ceci serait tres bien.

    Cependant, je reitere ma remarque precedente. A moins qu'on t'es expressment demandé de faire la gestion sous forme de liste chainé, tu peux tres bien faire tout sous forme de tableau.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    typedef struct tampon tampon;
    struct tampon
    {
        cellule *TableauCellule;
        int NombreCellule;
    };

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void creer_tampon(tampon *leTampon, int nb_cellules)
    {
        leTampon->NombreCellule = nb_cellules
        leTampon->TableauCellule = (cellule*) malloc (leTampon->NombreCellule*sizeof(cellule));
     
        int i;
        for (i=0 ; i<leTampon->NombreCellule ; i++)
            leTampon->TableauCellule[i] = -1;
    }

  7. #7
    Membre émérite
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Par défaut
    Si je suis ton schéma, ta variable tampon est du même type que cellule

Discussions similaires

  1. Classe pour la création d'un graphe xy
    Par Bob dans le forum MFC
    Réponses: 24
    Dernier message: 03/12/2009, 17h20
  2. Création dynamique de TImages
    Par Dric dans le forum C++Builder
    Réponses: 10
    Dernier message: 08/07/2002, 12h36
  3. [Kylix] Création d'un fichier lien
    Par DrQ dans le forum EDI
    Réponses: 2
    Dernier message: 14/05/2002, 21h30
  4. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 16h04

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