Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge

variable Menge inform einer Klasse in C++

JeromeB / 5 Antworten / Flachansicht Nickles

Hallo erstmal.


Ich muss für einen Programmentwurf 2 variabel große Mengen in Form von Klassen definieren (in C++).


Leider hab ich keine Idee wie das gehen soll und komme somit zu keinem Ergebnis. Die Sache ist auch recht dringend und ich würde mich sehr sehr freuen wenn sich hier jemand bereiterklären würde mir dabei zu helfen, inform des Quelltextes.


Vielleicht hat ja auch jemand ein Programm in dem er das schonmal gemacht hat.


Vielen vielen Dank an alle Helfer.


Ciao, Jerome.....(Jerome2000@gmx.de)

bei Antwort benachrichtigen
mr.escape JeromeB „die fragestellung war scheinbar wirklich zu ungenau. also viel von c verstehe...“
Optionen

OK, das sieht nach verketteter liste aus, oder bei eingeschränkten bereichen (werte und/oder anzahl) nach bitarray.
das ganze soll mit hilfe von konstruktoren geschehen.
also der benutzer gibt ne zahl ein die in seiner menge vorkommen soll und mit hilfe eines konstruktors soll dann ein objekt erstellt werden was dann diese zahl enthält und zu der menge gehört.
naja, und der benutzer soll halt so viele elemente für seine menge eingeben wie er will.

Also mit konstruktor UND soviele wie er will, wird nicht ganz trivial sein, den der konstruktor wird nur einmal pro instanz aufgerufen. Das heisst, dass im konstruktor wohl nur ein einziges element angegeben werden kann, alle andere weiteren mit einer extra methode. Für die verschiedenen strategien gibt es in der regel schon standard templates, aber die benutzt man erst, wenn man "ausgelernt" hat. Also muss hier alles zu fuß erledigt werden.
Im ersten fall, d.h. keine begrenzung, bietet sich eine verkettete liste oder ein nachwachsendes array.

class intKettenglied;

class intKettenglied {
public:
int num;
intKettenglied *next;
intKettenglied(){next=NULL;};
~intKettenglied(){if(next) delete next;next=NULL;}//rekursives löschen
};

class intKette {
public:
intKettenglied *glieder;
intKetten(){glieder=NULL;}
intKetten(int z){glieder=NULL;Append(z);}
~intKetten(){if(glieder) delete glieder;glieder=NULL;}
void Append(int z){//element einfügen, sehr simpel; sortiertes einfügen wäre evtl. besser, fehlerbehandlung empfohlen
intKettenglied *neu=new intKettenglied;
neu.num=z;
neu.next=glieder;
glieder=neu;
}
void Sort();//hier eine methode um die liste zu sortieren
//um es nach allen einfügungen für den folgenden vergleich
//leichter zu haben
};

Verwendung z.b.:
intKette kette1(3);//erster wert

kette1.Append(4);//zweiter wert
kette1.Append(7);//dritter
kette1.Append(1);//vierter
...
kette1.Sort();
intKette kette2(7);//erster wert
kette2.Append(6);//zweiter wert
kette2.Append(1);//dritter
kette2.Append(9);//vierter
...
kette2.Sort();

usw.
Jetzt fehlt noch eine funktion um zwei instanzen zu vergleichen.

mr.escape
"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen