dynamische Speicherallokation
-
Hallo!
Ich habe mal ne Frage. Folgendes Programm(Auszug) liegt zur Grundlage.
int main() { lg *adresse; int i, x, n, m, zahl; double gw, mw; cout <<"Erfassung des Lagerbestandes"; cout <<"\n"; i=0; gw=0; cout <<"\nWieviel Adressen moechten Sie speichern?: "; cin >>zahl; adresse = new lg[zahl]; do { cout <<"\nArtikelname (max. 20 Zeichen): "; cin >>adresse[i].name; // cout <<"\nArtikelnummer: "; cin >>adresse[i].artnr; cout <<"\nLangermenge: "; cin >>adresse[i].lmenge; cout <<"\nArtikelpreis: "; cin >>adresse[i].preis; gw=gw+adresse[i].preis*adresse[i].lmenge; i++; m=i; } while (i<zahl);Da hier ja dynamisch Speicherplatz für die Eingabe geschaffen wird, stellt sich jetzt für mich die Frage, wenn ich nun nicht mit der Abbruchbedingung -> while (i<zahl); <-, sondern mit -> while(!cin.eof()); <- die Schleife verlassen möchte und ich mehr Eingaben gemacht habe, wie ich zu Anfang eingeben soll, wird dann trotzdem mehr Speicherplatz geschaffen?? Da ich mir ja per Strg+Z den Abbruch selbst vorgeben kann

Danke
Timi
-
Dadurch, dass die Anzahl der Durchläufe schon vorher bekannt sind, würde ich einer for Schleife den vorzug geben. Das Strg-Z würde ich eher als außerordentliches Abbruchkriterium bezeichnen.
Es wird auf jeden Fall Speicher für zahl lgs reserviert in der Zeile
adresse = new lg[zahl];Egal, wieviele Durchläufe du unten machst.
-
PS: Vielleicht wäre ein vector das richtige für dich.
Dort kannst mit jeden Durchlauf ein lg mehr drauflegen/reinpacken.
-
Ok, danke
Das mit dem Vektor weiss ich leider nicht wie du das meinst, bzw. hab isch davon noch keinen Plan. Bin leider noch nicht der große C++ Checker

gruss
Timi