000
22.05.2007, 17:37 Uhr
~Michael1984
Gast
|
Hallo,
ich bin am Verzweifeln. Und zwar sollen wir einen Stack in C++ implementieren:
class StackDbl { int size; double *pa;
Und dazu nun eine Zuweisungsfunktion schreiben: StackDbl &assignStackDbl(StackDbl &to, const StackDbl &from);
Nun probiere ich die ganze Zeit schon rum, aber ich habe immer Probleme, wenn ich neuen Speicher alloziere, dass Elemente aus dem zweiten Stack gelöscht werden.
Hier mal ein Ausschnitt aus dem Code, ist gerade mitten in der Bastelphase, daher kann es sein, dass einige Variablen überflüssig sind:
javascript:insert_tag('
',1)
C++: |
StackDbl &assignStackDbl(StackDbl &to, const StackDbl &from) { int i, j, error = 0; double *pa_tmp; delete [] to.pa; for (to.size = 0; to.size < (from.size); to.size++) { if ((to.size % BLOCKSIZE) == 0) { // if (to.size > 0) { printf("Element(11) %.2f von from\n", from.pa[10]); /*Diese Allokation zerschießt FROM ab BLOCKSIZE!!!*/ pa_tmp = new(nothrow)double[(to.size) + BLOCKSIZE]; printf("Element(11) %.2f von from\n", from.pa[10]); if (pa_tmp == 0) error = 1; else { for (i = 0; i < to.size; i++) pa_tmp[i] = to.pa[i]; delete [] to.pa; to.pa = pa_tmp; delete [] pa_tmp; } /* } else { to.pa = new(nothrow)double[BLOCKSIZE];+ printf("Element(11) %.2f von from\n", from.pa[10]); if (to.pa == 0) error = 1; }*/ } if (error == 0) { to.pa[to.size] = from.pa[to.size]; to.size++; } }
return to; }
|
Unser Prof möchte gerne, dass Speicher immer in BLOCKSIZE-Größe (hier 10) angefordert wird, sofern es möglich ist.
Kann mir vielleicht jemand helfen? :-( |