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 :

implementation d'un Buffer Circulaire


Sujet :

C++

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Points : 110
    Points
    110
    Par défaut implementation d'un Buffer Circulaire
    Bonjour à tous;
    Je souhaite implémenter un buffer circulaire. J'ouvre un fichier et je stoke les données dans un vecteur. Je souhaite mettre ces données dans un autre tableau de taille fixe en deux étapes:
    1 - je dois mettre des elments dans le buffer s'il n'est pas plein.
    2 - si le buffer est plein, je commence par écraser le premier élement par la donnée qui vient d'arriver.

    Voici le code que j'ai essayé de faire;
    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
     
    #include <iostream>
    #include <fstream>
    #include<string>
    #include<vector> 
    using namespace std;
     
    typedef vector<float> Tableau;
     
     
    int main()
    {
    	Tableau tab;
    	float x;
    	int TailleBuffer = 100;
    	float Buffer[100];
    	int i;
    	ifstream data("D:\\SignauxTexte\\ecg.txt",ios::in); //ouverture du fichier en lecture;
        i=0;
     
       while(true)
    {
       data >> x;
     
       // test si fin de fichier atteinte
       if(data.eof() == true)
          break; 
       // ajout de la donnée dans un tableau
        tab.push_back(x);
    	for(int n=0; n<tab.size(); ++n)
    	{
    		if (tab.size()<TailleBuffer) // on compare la taille du tableau à la taille du Buffer		
    		{
    			Buffer[n]=tab[n]; // on met l'element tab[n] dans la case de buffer correspondant;
     
    		}
    		else
    		{	
    			Buffer[(i-1)%TailleBuffer] = tab[i-1];	// on ecrase l' élement (i-1)%TailleBuffer par le nouveau element
     
     
    		}
    		cout<<scientific;
    		cout<<i<<" "<< x <<" "<<Buffer[n]<<" "<<tab[i-1]<<endl;
     
    	}
     
     
       i++; //on compte le nombre de lignes
    }
       data.close();		
       return 0;
    }
    A l'exécution j'obtiens une seule valeur dans mon buffer, et qui de plus est fausse, car non contenue dans le fichier de lecture.
    J'arrive par contre à stocker correctement les données dans le tableau. mais je ne sais pas exactement comment mettre ces données dans le buffer.

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Points : 496
    Points
    496
    Par défaut
    Il est un peu tard là, mais je ne comprend pas trop le role du for.
    Pour quoi ne pas utilise un index que tu incremente a chaque ajout, puis tu test si cet index n'est pas au dessus de la taille total du tableau, si oui tu repard a zéro !
    ________________________________________________
    http://bliquid.fr : Blog sur Android et l'Acer Liquid

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    il y a une implementation dans boost si ca interesse quelqu'un...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Buffer Circulaire C#
    Par apelleti dans le forum C#
    Réponses: 2
    Dernier message: 19/05/2008, 15h19
  2. Réponses: 12
    Dernier message: 27/03/2008, 22h01
  3. Liaison série, Buffer Circulaire ?
    Par innosang dans le forum Ubuntu
    Réponses: 2
    Dernier message: 26/12/2007, 21h52
  4. Cree un buffer circulaire
    Par caesarvanou dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 06/06/2006, 10h59
  5. buffer circulaire
    Par fumble dans le forum C
    Réponses: 34
    Dernier message: 10/03/2005, 08h51

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