Die letzten 10 Beiträge |
Man23 |
Danke Eule |
eulerscheZahl |
Ja, das war Aufgabe 3.
Es gibt noch eine Funktion clear, aber die ist bei mir noch kürzer als print. |
Man23 |
Ich bin jetzt leider im Moment ein wenig verwirrt .
Ist das jetzt die ganze Aufgabe? |
eulerscheZahl |
Das "heute" hat ja nicht mehr geklappt.
code: |
1:
2:
3:
4:
5:
|
void CRingBuffer::print()
{
for(int i = 0; i < m_cntFilled; i++)
std::cout << *(m_pBuffer + ((i + m_idxRead) % m_nSize)) << std::endl;
} |
|
Du darfst den Wert von m_idxRead zwar abfragen, der Variable aber keinen neuen Wert zuweisen. |
Man23 |
Auf m_idxRead und m_idxWrite darfst du dabei nur lesend zugreifen.
Wie soll ich das genau machen ?
Kannst du mir das sagen?
Muss heute fertig werden. |
eulerscheZahl |
In der Aufgabenstellung heißt es, dass print mittels cout den Inhalt des RingBuffers ausgeben soll, davon bist du weit entfernt.
Du brauchst eine Schleife, in der cout verwendet wird. Auf m_idxRead und m_idxWrite darfst du dabei nur lesend zugreifen. |
Man23 |
Die Methode print soll nur die Elemente ausgeben, die tatsächlich im Ringpuffer
gespeichert sind. Schreiben Sie den Code für die Schleife auf, die auf alle gespeicherten Elemente
zugreift und diese mit cout ausgibt (die gespeicherten Elemente sind alle Elemente, die mit put in den
Buffer geschrieben, aber noch nicht mit get ausgelesen wurden). Lese- und Schreib-Index dürfen dabei
nicht verändert werden!
Ist diese Aufgabenstellung nicht komplett programmiert ?
Was fehlt da noch?
Waren meine ideen komplett falsch? |
eulerscheZahl |
Das ist nicht das ganze Programm, aber get und put habe ich dir programmiert.
|
Man23 |
Ja deine Vermutung ist richtig Euler.
Das Problem ist das ich nicht weiß welcher Code wo stehe soll , daher auch meine Frage .
Hast du paar Gips wie ich weiter vorgehen soll ? |
eulerscheZahl |
RE: Objekt Programmierung
Der Teil steht im Nirgendwo:
Zitat: |
if( m_nsize == 10){
cout << 'Puffer voll' << endl;
}
if(m_nsize == 0 ) {
cout << 'leer ' << endl;
}
|
das muss in eine Funktion rein.
Außerdem ist C++ case-sensitive, das heißt er macht einen Unterschied, ob du m_nSize oder m_nsize schreibst.
Zitat: |
void print(){
int m_nSize;
int m_cntFilled = x;
//j
int* m_pBuffer = 0;
int m_idxWrite = 0;
int m_idxRead = 0;
} |
Zu welcher Klasse gehört die Funktion denn?
CRingBuffer::print()
Wenn du die Variablen hier neu anlegst, "verdeckst" du damit die Klassenvariablen, dabei müsstest du nur darauf zugreifen.
Zu Aufgabe 2:
es muss sowohl für voll, als auch für leer gelten: m_idxWrite == m_idxRead
Ich vermute, dass m_nSize angibt, wie viel Speicherplatz zur Verfügung steht und m_cntFilled angibt, wie viele beschieben sind, richtig?
dann: leer für m_cntFilled == 0, voll für m_cntFilled == m_nSize. |
Es sind weitere Beiträge zu diesem Thema vorhanden. Klicken Sie hier, um sich alle Beiträge anzusehen. |
|
|