Modularisierung!?



  • Hallo habe hier einen sogenannten spaghetti-code von einer verketteten liste.
    Mein Problem ist das ich nicht weiss wie ich dieses Programm sinnvoll in mehrere dateien, headerdateien etc aufteilen soll.
    Kann mir da jemand einen vorschlag bringen. habs schon paar mal probiert aber hat nie so richtig geklappt.

    #include <iostream>
    #include <string>
    #include <conio>
    #include <windows>
    
    using namespace std;
    
    class knoten
    {
            private:
              double daten;
              knoten* next;
              knoten* last;
    
            public:
              void init();
              void neu(double);
              void ausgabe();
              void ende();
              void back();
              void loeschen(double);
    };
    
    knoten* anfang;
    knoten* temp;
    knoten* listenende;
    
    void knoten::init()
    {
            anfang = new(knoten);
            anfang->daten=0;
            anfang->next=NULL;
            anfang->last=NULL;
    
    }
    
    void knoten::neu(double d)
    {
            temp=anfang;
            while(temp->next!=NULL)
                    temp=temp->next;
    
            temp->next= new(knoten);
            temp->next->last=temp;
            temp=temp->next;
            temp->daten=d;
            temp->next=NULL;
            listenende=temp;
    
    }
    
    void knoten::ausgabe()
    {
            temp=anfang;
            cout<<temp->daten<<" ";
            while(temp->next!=NULL)
            {
    
                    temp=temp->next;
                    cout<<temp->daten<<" ";
            }
    }
    
    void knoten::back()
    {
            temp=listenende;
            cout<<endl<<temp->daten<<" ";
            while(temp->last!=NULL)
            {
                    temp=temp->last;
                    cout<<temp->daten<<" ";
            }
    }
    
    void knoten::ende()
    {
            delete(anfang);
            delete(listenende);
            delete(temp);
    }
    
    void knoten::loeschen(double d)
    {
            temp=anfang;
            while(temp->daten!=(d-1))
                    temp=temp->next;
            temp->next=temp->next->next;
    
    }
    
    knoten* element;
    
    int main()
    {
            element = new(knoten);
    
            element->init();
    
            char auswahl;
    
            do
            {
                    system("CLS");
                    cout<<"Doppelt verkettete Liste"<<endl;
                    cout<<"Elemente einfuegen: \t e"<<endl;
                    cout<<"Element loeschen:   \t l"<<endl;
                    cout<<"Vorwaertsausgabe:   \t a"<<endl;
                    cout<<"Rueckwaertsausgabe: \t r"<<endl;
                    cout<<"Programm beenden:   \t q"<<endl;
                    cout<<"Bitte waehlen: ";
                    cin>>auswahl;
    
                    switch(auswahl)
            {
                    case 'e': cout<<"Wieviel Elemente?: ";
                              int anzahl;
                              cin>>anzahl;
    
                              for(int i=1;i<=anzahl;i++)
                                    element->neu(i);
                              break;
    
                    case 'l': cout<<"Welches Element soll geloescht werden?:";
                              int l;
                              cin>>l;
                              element->loeschen(l);
                              break;
    
                    case 'a': element->ausgabe();
                              getch();
                              break;
    
                    case 'r': element->back();
                              getch();
                              break;
    
            }
    
            }
            while(auswahl!='q');
    
            element->ende();
            delete(element);
            return 0;
    }
    


  • spaghetti code? wo?

    pack mal die Klassendeklaration in eine header datei, und die implementation in eine *.cpp datei, dann passt das schon 🙂



  • ja und die funktionen sollten die nicht irgendwie auch in eine eigene datei und wie binde ich das jeweils ein?? kleiner tipp vielleicht??



  • Alles was deine classendeklaration betrifft in ne datei namens knoten.h

    alle funktionen die der klasse gehören packste in ne datei namens knoten.cpp
    und bindest da die knoten.h ein

    dann machste noch ne dritte datei (in die kommt die mainfunktion) und bindest da die knoten.h ein

    und fertig



  • ok habs jetzt. Vielen DANK!!!! 👍


Log in to reply