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;
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.
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; }
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.
Partager