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


Anmelden zum Antworten