Probleme bei Programm mit pointer, array und struct



  • Hallo Forum,
    ich bin neu hier, meine C++-Kenntnisse sind sehr beschränkt und ich habe auch gleich eine Frage (deswegen habe ich mich angemeldet):
    Ich schreibe zur Zeit ein Programm, das Bauteile 'Verwalten' soll. Jedes Bauteil wird durch die Eigenschaften Name, Lieferant, Preis und Anzahl charakarisiert.
    Folgenden Code habe ich bis jetzt zusammengewurschtelt:

    #include <iostream>
    #include <conio.h> 
    #include <string>
    #include <iomanip>
    
    using namespace std;
    
    #define ANZAHL 2
    
    struct Bauteil{
        string name;
    	string lieferant;
    	double preis, anzahl;
    };
    
    Bauteil *pMyStruct = new Bauteil[ANZAHL];
    
    void eingabe(){
    	cout<<"Wieviele Bauteile moechten Sie hinzufuegen? ";
    	int hin;
    	cin<<hin;
    	cout<<endl;
    	for(unsigned int index = 1; index <= hin; index++){
    		cout<<"Das "<<index<<". Bauteil: Name, Lieferant, Preis, Anzahl? ";
    		string na, li;
    		double pr, an;
    		cin>>na>>li>>pr>>an;
    		pMyStruct[index-1].name = na;
    		pMyStruct[index-1].lieferant = li;
    		pMyStruct[index-1].preis = pr;
    		pMyStruct[index-1].anzahl = an;
        }
    }
    
    void ausgabe(){
    	cout<<endl<<left<<setw(12)<<"Bauteilname"<<setw(12)<<"Lieferant"<<setw(12)<<"Preis"<<setw(12)<<"Anzahl"<<endl;
    	for(unsigned int index = 1; index <= ANZAHL; index++){
    		cout<<left<<setw(12)<<pMyStruct[index-1].name<<setw(12)<<pMyStruct[index-1].lieferant<<fixed<<setprecision(2)<<setw(12)<<pMyStruct[index-1].preis<<
            setw(12)<<pMyStruct[index-1].anzahl<<endl;  
    	}
    }
    
    int main(){
    	delete [] pMyStruct;	
    	char wahl;
    	int i=1;
    	do{
    		cout<<endl<<endl<<"* * * * Programm zur Verwaltung von Bauteilen * * * *"<<endl<<endl;
    		cout<<"Was moechten Sie machen?"<<endl;
    		cout<<"1. Bauteil (h)inzufuegen!"<<endl;
    		cout<<"2. Bauteilliste (a)nzeigen!"<<endl; 
    		cout<<"3. Programm (b)eenden! HA!"<<endl;
    		cout<<"h, a oder b? ";
    		cin>>wahl;
    		cout<<endl;
    		getchar();
    		switch(wahl){
    			case 'h': 
    				eingabe();
    				break;
    			case 'a': 
    				ausgabe();
    				break;
    			case 'b': 
    				i=0;
    				break;
    			default:
    				cout<<"Falsche Eingabe";
    				break;
    		}
    	}while (i!=0); 
    
    	//eingabe();
    	//ausgabe();
    	getch(); 
    	return 0;
    }
    

    Wie ihr sehen könnt, bestimme ich gleich am Anfang mit

    #define ANZAHL 2
    

    wieviele Bauteile man hinzufügen soll/muss/darf.

    Genau da liegt mein Problem, das möchte ich ändern.
    Man soll beliebig viele Bauteile der Liste hinzufügen können. Also man wird im 'Hauptmenu' gefragt, was man möchte. Gibt man 'Bauteil hinzufuegen' an, kommt man zu einer Eingabemaske und fügt eins hinzu. Danach springt man wieder ins 'Hauptmenu'. Nun kann man erneut 'Bauteil hinzufuegen' anwaehlen. Dieses Bauteil wird dann der vorhandenen Liste angefuegt. Das soll 'beliebig oft' funktionieren.

    Wie muss ich da ran gehen?

    Das wars erst mal von meiner Seite. Ich hoffe ihr versteht (einigermaßen) mein Problem und könnt mir helfen. Bei Fragen: fragen!

    Gruß von mir!



  • Dann brauchst du am besten einen vector aus der STL. Den kannst du beliebig erweitern.
    Schau dich mal um, du findest sicher was.
    Hier ist auch ein eBuch, das ganz ok ist: http://www.informatik.hs-bremen.de/~brey/stlb.html

    Ach ja, guter Start ist wohl das Magazin hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-143816.html


Anmelden zum Antworten