Cache Simulator



  • Also: Wir müssen für die Schule einen Cache Simulator schreiben. Das Teil soll aus 3 Textfiles bestehen. Ein Test, ein Konfig und ein Ergebnis File. Im Konfig File steht drin wie viele Zeilen der Cache hat und wie lang die Zeilen sind. Im Testfile werden Binärzahlen reingeschrieben und diese werden durch das Progamm in ein Array oder sonst was(ist eigentlich egal) geschrieben. Es soll eigentlich nur getestet werden ob eine Zeile aus dem Testfile mehr als einmal vorkommt. Wenn ja ist es ein Cash hit wenn nicht ist es ein Cash miss.
    Bsp: 1001
    0110
    0101
    1001
    Wenn diese Zahlen im Testfile stehen haben wir einen Cash hit (weils schon mal vorgekommen ist und 3 Cash misses, weil die infos neu sind.

    Und die anzahl der Cash hits und misses soll im Ergebnisfile ausgegeben werden.

    Hat irgendwer eine Idee wie ich das realisieren könnte?
    Beispiele oder sowas wäre super.
    Schon mal danke für alle Posts
    Peace & Thx 😉



  • Schreib dir ne Klasse, die irgendeine Datenstruktur enthält (z.B. std::vector), wo Du Daten ablegen kannst. Dann schreibste ne Funktion, der Du einen Wert übergeben kannst, diese soll dann nachschauen, ob der Wert bereits vorliegt. Falls ja gibt sie ein true zurück (für CacheHit) ansonsten ein Cache-Miss und trägt die Daten dann auch in die Datenstruktur ein, damit sie beim nächsten mal vorhanden sind.

    Diese Klasse repräsentiert dann sozusagen Deinen Cache.

    Das Hauptprogramm sollte dann nichtmehr schwer zu realisieren sein.

    MfG Jester



  • Das kontrollieren obs schon drin ist wird mit "contains" hinhauen glaub ich.
    Das größte Problem ist nur, dass wir noch nie gelernt haben wie wir auf andere Files zugreifen... Kurz: Ich hab keine Ahnung wie ich mir einen Verweis von dem einen File auf das andere machen kann.
    Das Teil fürs kontrollieren wird vermutlich ein Array irgendwo im Hauptprogramm sein oder?



  • ich denke mit einer map bist du auch gut bedient.
    definierst sie im allg. so : map<binaerzahl,int>

    dann liest du schön einzeln deine werte aus der testdatei und sagst einfach map[binaerzahl]++ und prüfst hinterher ob map[binaerzahl] > 1 ist.



  • ok, das bring ich schon irgendwie zam.
    Das wichtigste ist aber: Wie kann ich von einem File Daten ZEILENWEISE auslesen und zb in ein array im hauptprogramm speichern? Ich hab halt null checkung wie ich von einem File auf n anderes zugreife...



  • benutze einfach die klassen ofstream für die ausgabe und ifstream für die eingabedateien.

    um eine solche anzulegen tue folgendes :

    ifstream eingabedatei("beispiel.txt");

    die datei ist dann auch gleich geöffnet.

    ich nehme mal an dass nur jeweils ein wert je zeile bei dir drin steht, dann reicht folgendes hier vollkommen aus :

    eingabedatei >> wert;

    das ganze musst du solange machen bis :

    eingabedatei.eof() == true

    die ausgabedatei ist nicht viel anders zu verwenden. halt genauso wie cout.



  • was für includes brauch ich da und wie deklarier ich die dinger?
    Hast vielleicht ein mini beispielprogramm das nur aus einem file die Daten eben so wie du oben beschrieben hast ausliest?
    Auf alle Fälle mal thx fürs helfen


Anmelden zum Antworten