circle buffer



  • guten Abend

    folgendes Problem:

    Pufferspeicher mit einer festen Größe. Also Speicher wird immer wieder beschrieben nachdem er gelesen wurde...

    Ich soll alle Daten, die noch im Puffer sind, mit einer print-Methode ausgeben.
    Die Ausgabe soll mittels einer Schleife ausgeben werden.

    wichtige Attribute:
    - Größe,
    - *pointer auf Startadresse(0) des Speichers
    - Leseindex, Füllstand(vom Puffer) // dürfen nicht verändert werden

    kann ich das so machen oder geht das am Prinzip von dem speicher vorbei..?

    pointer+LeseIndex; // zeigt nun auf das erste Element des puffers
    
    for(int i=Füllstand;i>0;i--){ // so oft durchlaufen wie Elemente im Puffer
    cout << *pointer; // gibt ersten Wert des Puffers aus
    pointer++; // aufs nächste Element zeigen
    

    Ist der Puffer nun am Ende des Arrays angelangt kann er ja bei Array[0] weiter gehen. Dort sind die weiteren Werte gespeichert, falls vorhanden.

    Kann ich das einfach so machen??

    int counter=leseindex;
    
    for(.......
    pointer++; 
    
    counter++; //Zählt den Index mit
    if(Größe<=counter){ // überprüft ob schon das ende des Arrays ereicht wurde
    pointer=Array; } //gehe zum Start des Arrays
    counter=0;
    }
    

    danke und greets
    stto 🤡


  • Mod

    Da ist einiges schwer durcheinander. Versuch den Code mal sauber zu schreiben, anstatt nur schnell im Foreneditor hinzuklatschen. Sonst weiß man nicht, was echte Fehler sind oder was du bloß falsch aufgeschrieben hast.

    Die Grundidee ist ok, die Umsetzung falsch. Allgemeine Alternative, die eventuell besser (und mit Sicherheit besser lesbar) ist: Modulo.


Anmelden zum Antworten