Vector.Size gibt Vector.Capacity aus



  • Hey! Hab nach eurem letzten verbesserungsvorschlag mich mal an die STL gesetzt und mich bei meinem Progrämmchen für vector entschieden. Ich gebe Produkte ein und möchte alle Produkte ausgeben lassen, die ich bisher eingegeben habe. Macht er auch. Aber auch noch mehr.

    void ausgabe()
    {
    	for(int i = 0; i<_name.size(); i++)
    				{
    					cout<<"Produktname:   "<<_name[i];
    					cout<<"\nMHD:           "<<_mhd[i];
    					cout<<". . . . . . . . . . . . . "<<endl;
    				}
    }
    

    Hier soll er bei zb zwei eingegebenen Produkten auch nur soviele ausgeben, wie auch belegt sind... Ich glaub der gibt mir die Capacity aus oder? Also er zeigt mir schön die Produkte an aber auch noch (bei 2 Produkten) 8 leere Felder an!

    Hier mal mein kompletter Code: (bin anfänger 😉 )

    #include <iostream>
    #include <conio.h>
    #include <vector>
    #include <Windows.h>
    #include <string>
    
    using namespace std;
    
    //GLOBALE VARIABELN //
    int aktion_in;
    int zero = 10;
    string
    					name,
    					mhd;
    int anzahl;
    //VECTOREN//
    
    	vector<string> _name(zero);
    	vector<string> _mhd(zero);
    	vector<int> _anzahl(zero);
    
    void start()
    {
    	cout<<"Hallo! Bitte geben sie ihre gewünschte Aktion ein! \n [1] - Produkt hinzufügen \n [2] - Produkt entfernen"<<endl;
    	cin>>aktion_in;
    	if(aktion_in == 1 || 2)
    	{
    				cout<<"Anzahl einzugebener Produkte eingeben!"<<endl;
    				cin>>anzahl;
    				for(int i = 0; i<anzahl; i++)
    				{
    					string _name_,
    								_mhd_;
    						int _anzahl_;
    					cout<<"Name des Produktes eingeben!\n"<<endl;
    					cin>>_name_;
    					_name[i] = _name_;
    					cout<<"MHD des Produktes eingeben!\n"<<endl;
    					cin>>_mhd_;
    					_mhd[i] = _mhd_;
    
    					_mhd.push_back(_mhd_);
    				}
    
    	}
    
    }
    
    void ausgabe()
    {
    	for(int i = 0; i<_name.size(); i++)
    				{
    					cout<<"Produktname:   "<<_name[i];
    					cout<<"\nMHD:           "<<_mhd[i];
    					cout<<". . . . . . . . . . . . . "<<endl;
    				}
    }
    
    int main ()
    {
    	start();
    	ausgabe();
    	getch();
    }
    


  • Yeah habs selber rausgefunden 🙂

    Hab zero auf 0 gesetzt und einfach jeweils pro durchlauf ein push_back eingefügt 🙂



  • if(aktion_in == 1 || 2)
    

    geht in die Hose, du meinst wohl

    if(aktion_in == 1 || aktion_in == 2)
    

    Wirf <windows.h> raus und benutz keine globalen Variablen.



  • Done.

    Wie kann ich Funktionen in Funktionen aufrufen? Weil ich möchte nach jedem durchlauf an den Start zurück! Doch der Start besetht aus zwe Funktions aufrufen. Und so geht das ja nicht...

    Ausweichmöglichkeit?



  • 9A-91 schrieb:

    Weil ich möchte nach jedem durchlauf an den Start zurück!

    Wie wäre es mit einer Schleife ? 😉



  • Funktionen kann man in Funktionen aufrufen, in dem man die Funktionen in den Funktionen aufruft 😃 ...

    In deinem Fall würde ich in der main die beiden Funktionen start() und ausgabe();
    in einer Schleife laufen lassen. Vielleicht noch eine zusätzliche Benutzereingabe, ob der das Programm beenden will, oder weitere Produkte eingeben will.


Log in to reply