variable Mengen in C++



  • Jerome83 schrieb:

    also ein feld zu erzeugen ist nicht der sinn der aufgabe, denn die haben ja immer feste feldgrößen...

    es geht ja eben um dynamische speicherverwaltung und zwar objektorientiert...

    erklär mir doch mal einer die zeile std::vector<DeineKlasse>
    was bedeutet das im einzelnen???

    http://www.hrz.uni-dortmund.de/computerPostille/Juni1992/9)Objektorientierung.html

    Objektorientiert wird dein Programm _nicht_, indem du Speicher dynamisch
    allokierst.

    Klar hat ein Feld eine bestimmte groesse, aber du sagtest:

    Also ein dynamisches Feld, jeder Anwender kann also festlegen wie viele
    Elemente er eingeben will (pro Menge).

    was bedeutet, das es gar keine Probleme macht, entsprechend Speicher zu
    reservieren, da du den User vorher eingeben laesst, wieviel Elemente er
    pro Menge eingeben will.

    Ich sehe in deiner Aufgabenstellen wirklich kein Problem.

    mfg
    v R



  • @Plassy: naja, also mit vector wird das nix. das ist ne template klasse wie du sagtest. da das aber nie bei mir drangenommen wurde werd ich es nicht verwenden, dann weiß der sofort das das program nicht von mir ist. ich mein, es wär schön wenn ichs allein hinbekommen würde, aber ich peils halt einfach nicht so gut wie andere...

    @virtuell Realisticer: ja, so wäre das kein thema. aber dann bräuchte ich auch eine klassen wenn ich den benutzer vorher frage wieviele elemente seine mengen haben, das wäre ja dann einfach, das würd ich wohl hinbekommen. aber in dem fall würde der speicher ja in dem moment für sämtliche elemente die der anwender eingeben würde, schon vorher reserviert. es gfeht hier aber darum das der speicher für jedes einzelne element der menge in dem moment den speicher freigibt wenn es erzeugt wird. das muss irgendwie mit dem operator "new" gehen.
    bin jetzt soweit in meiner überlegung das ich für jede der mengen eine eigene klasse definieren muss und die elemente der menge in einer einfach verketteten liste eingeben lasse. und da ist die speicherverwaltung ja dynamisch, oder? denn immer wenn ein eölement hinten rangehängt wird wird in dem moment vorher sein speicher reserviert, oder?

    hat jemand mal ein beispiel für so ne verk. liste anzubieten, denn das zu programmieren schaff ich wohl nie alleine.....

    ciao und danke für die mühen, jerome.....



  • bei euch gilt es als betrug, wenn man sich ausserhalb des unterrichts mehr zu einem thema aneignet?
    diese schule wuerde ich anzuenden.



  • lieber mal alle streichhölzer verstecken, sonst gibts ein unglück



  • naja, was heißt betrug.

    es ist nicht inhalt der aufgabe dinge zu verwenden die nicht behandelt wurden. wir sollen ja das problem mit dem gelernetn umsetzen und nicht mit anderen dingen...

    also, hat jemand solch ein programm mit einer einfach verketteten liste???



  • Hm, habt ihr denn schon Zeiger dranngenommen ?

    struct foo
    {
     foo * prev;
     foo * next;
     T     Daten;
    };
    

    Dazu schreibst Du Dir eine Methode die neue Elemente Eintragen und entfernen kann. Du mußt halt immer dafür sorgen das die Zeiger prev und next auf das richtige Element zeigen.

    Wir wissen nicht was Du bereits an wissen durch die Schule hast und Du daher anwenden kannst.



  • mh, logisch hatten wir zeiger, haben ja auch verkettete listen besprochen.

    aber den zeiger auf den vorgänger halte ich für überflüssig, da ich ja nix löschen will in der liste...

    kannst du mir mal ne klasse MENGE definieren???



  • Hier mal eine schnelle Klasse
    Header

    class CFileliste  
    {
    public:
    	CFileliste *m_pNext;
    	CFileliste(CFileliste *pNext);
    	virtual ~CFileliste();
    	int m_listid;
    };
    

    CPP-Datei

    #include "Fileliste.h"
    
    CFileliste::CFileliste(CFileliste *pNext)
    {
    	m_pNext=pNext;
    	m_listid = 0;
    }
    
    CFileliste::~CFileliste()
    {
    
    }
    

    Die Implementierung

    Header

    CFileliste *m_pfilelist;
    	void addfiletolist();
    

    Cpp-Datei

    void CProgrammeDlg::addfiletolist()
    {
    	CFileliste *pdatenzeiger;
    	pdatenzeiger=new CFileliste(m_pfilelist);
    	m_pfilelist=pdatenzeiger;
    }
    
    ProgrammeDlg::CProgrammeDlg(CWnd* pParent /*=NULL*/)
    	: CDialog(CProgrammeDlg::IDD, pParent)
    {
    	m_pfilelist=NULL; 
    
    }
    
    CProgrammeDlg::~CProgrammeDlg()
    {
    	CFileliste *temp;
    	while(m_pfilelist!=NULL)
    	{
    		temp=m_pfilelist->m_pNext;
    		delete m_pfilelist;
    		m_pfilelist=temp;
    	}
    }
    


  • elises lanchrichten sind einfach immer wieder gut. Das wollte ich einfach mal loswerden.

    aber den zeiger auf den vorgänger halte ich für überflüssig, da ich ja nix löschen will in der liste...

    Es geht nicht ums löschen, sondern darum von einem Element wieder zu seinem Vorgänger zu kommen.



  • helium logged out schrieb:

    Es geht nicht ums löschen, sondern darum von einem Element wieder zu seinem Vorgänger zu kommen.

    Vielleicht will er das ja auch nicht.



  • Also wenn ich den von mir Zitierteen Text so ansehe, scheint er der meinung zu sin, dass man nur zum Vorgänger möchte um irgendwas zu löschen. Mir fällt da Spontan aber noch den Wert auszulesen und ihn zu verändern ein.



  • Mir faellt dazu ganz einfach ein, sich einfach nur vor und zurueck zu bewegen.

    mfg
    v R



  • Vielleicht will er das gar nicht. Ich nehm mal stark an, dass es offensichtlich ist, dass man in einer einfach verketteten Liste nicht rückwärts gehen kann. Was nicht ganz so offensichtlich ist, ist, dass man das aktuelle Element nicht in O(1) entfernen kann. Deshalb hat er nur gesagt, dass er das nicht will, weil das andere ja eh klar ist.



  • ich brauch den zeiger auf den vorgänger doch nicht, ich will die liste weder rückwärts durchsuchen noch irgendwas löschen...

    aber um mal ehrlich zu sein: der quelltext ist mir schleierhaft!

    warum brauch ich extra noch ne headerdatei? ist doch quatsch, das muß auch ohne gehen. kann man denn nicht ne einfach verkettete liste in form einer klasse definieren? und wenn ja, könnte das mal jemand MIT kommentaren zu den einzelnen zeilen tun?

    vielen dank schonmal.

    ciao, jerome.....



  • Hm, irgendwie hab ich das Gefühl Du suchst jemanden der Deine Hausaufgaben macht.

    (Übrigns bigts auch ne std::list<> ;o) )

    Such mal bitte bei Google nach verketteten Listen oder hier im Forum. Du wirst sicherlich vieles Finden was besser beschrieben ist als es jemand hier auf die schnelle machen könnte.



  • Jerome83 schrieb:

    aber um mal ehrlich zu sein: der quelltext ist mir schleierhaft!

    warum brauch ich extra noch ne headerdatei? ist doch quatsch, das muß auch ohne gehen. kann man denn nicht ne einfach verkettete liste in form einer klasse definieren? ciao, jerome.....

    Und was glaubst du aus was eine Klasse besteht.
    Aus einer Header und einer CPP-Datei



  • die iostream.h muß als header reichen...

    es muß ja gehen, sonst hätt ich ja net die aufgabe...

    mir is auch klar was so ne verkettete liste is und wie die funktioniert. aber ich kanns net programmieren. das die nen infoteil hat und nen zeiger auf den nachfolger is alles ganz schön und gut, aber erstmal machen...

    wer kanns?



  • jeder hier kanns. es ist naemlich voellig trivial. aber es hat keiner bock das zu machen, wenn du nicht die geringsten bemuehungen zeigst, das selbst hinzukriegen.
    iostream.h gibt es laut standard nicht.
    du bist also auch angehalten, kein verneunftiges design zu verwenden (nachnutzbarkeit durch extra haeder und cpp)?
    ich hasse dumme lehrer.



  • Ich hasse dumme Lehrer noch viel mehr. Die haben meist irgendwie ein C++ für Anfänger Buch gelesen und halten sich für die großen Helden.

    @Jerome83: Natürlich ist es egal, ob du dein Projekt in einer Datei hast oder auf 50 Dateien aufteilst, nur ist erstes absolut nicht wartbar und verkompliziert den Prozess, wenn man Teile eines Alten Projekts in einem Neuen verwendet. Es ist schlichtweg blödsinn.



  • @PeterTheMaster: Keine bemühungen? ich saß die letzten drei tage jeden abend da und hab mir den kopf zerbrochen eine liste zu programmieren und habe mich mit dem skript aus dem unterricht beschäftigt. mir ist auch vollkommen klar wie so eine liste aussieht, selbst die funktionen teilmenge, schnittmenge, menegnvergleich sind mir klar, aber eben nur THEORETISCH!!! ich schaffe es neben nicht das alles mit den mir aus dem unterricht bekannten mitteln in quelltext umzusetzen.

    meinen vollsten respekt haben all die die sich mit c++ sehr gut sukennen und solche programme wie ich sie hier nicht auf die reihe bekomme mal eben im vorbeigehen aufs papier bringen...

    vielleicht liegts auch an dem monolog den mein lehrer da stunde für stunde vorgetragen hat ohne seine schüler einzubeziehen geschweige denn mal ein paar beispiele zu machen...

    naja, wenn du mir in der form nicht helfen willst dann is das schon ok, versteh das auch irgendwie. bin dann wohl an die falschen geraten.

    vielleicht ist ja jemand anderes bereit mich zu unterstützen.

    ciao, jerome......


Anmelden zum Antworten