Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

chryztyne

Frischling

  • »chryztyne« ist der Autor dieses Themas

Beiträge: 8

Wohnort: Bad König

  • Private Nachricht senden

1

06.03.2010, 08:52

Probleme beim auswerten zerlegter Zahlen

Hallo allerseits.

Ich habe ein kleines Problem. Ich möchte Zahlen zerlegen, und zwar in die Bestandteile (8,4,2,1).
Bedeutet: in der 15 sind die Zahlen (8,4,2,1), in der 7 z.B. nur die Zahlen (4,2,1) enthalten.

Zerlegen in die einzelnen Bestandteile ist nicht das Problem, das konnte ich ohne Schwierigkeiten lösen.
Mein Problem ist jetzt, dass das Programm sich die Zahlen irgendwo "merken" muss, also das Ergebnis der Zahlenzerlegung, damit ich diese hinterher auswerten kann.
Bei einer Zahl funktioniert das auch Problemlos. Jedoch soll das Programm mit 5 verschiedenen Zahlen arbeiten. Hierbei soll es sich "merken", welche Zahl in welche Bestandteile zerlegt wurde.

Ziel des Ganzen ist, dass das Programm die einzelnen zerlegten Zahlen zählt (z.B. es sind insgesamt 3 Achter, 2 Vierer, etc...) und jeweils den Teil, der nicht durch 2 Teilbar ist (oben die Achter) , abzieht und zwar an der Zahl, in der auch alle Teile "zuviel" enthalten sind und somit wieder eine durch 2 teilbare Anzahl der zerlegten Zahlen ergibt.

Mein zerlegtes Ergebnis sieht eigentlich zur Zeit immer im gleichen Muster aus: die 8 (1000), die 15 (1111), die 7 (0111), etc.
Die erste Stelle gibt die Anzahl der Achter, die Zweite die der Vierer, etc. an.

Ich habe das ganze in eine Klasse gepackt, d.h. die Zerlegung der einzelnen Zahlen. Auch die Werte werden dort auch zwischengespeichert.

Ich habe bisher schon versucht, die ganzen Werte in Variablen zu speichern, jedoch wird deren Anzahl dann irgendwie extrem viel, denn es sind ja 5 Zahlen zu zerlegen ;)

Ich suche hier eigentlich jetzt auch nicht nach einer genauen Lösung, vielmehr nach einem Denkanstoss, wie man am besten an das Problem herangeht.

Kann ich einfach mehrere Instanzen der Klasse aufrufen um so jeweils separat die Werte in den Variablen zu speichern? Oder wäre doch eine Liste am sinnvollsten?

Ich hoffe, dass ihr mir überhaupt folgen konntet, was ich beabsichtige. Ist ein wenig kompliziert ohne richtige Beispiele arbeiten zu können. Hoffe, ihr könnt mir trotzdem einen Denkanstoss geben.

Vielen Dank schon mal :)

2

06.03.2010, 09:55

Der Denkanstoß nennt sich STL (Standard Template Library). Dort hast du Container wie std::vector oder std::list, std::map etc.. In diese kann man Objekte reinlegen und sie nachher aufrufen wie man möchte.

Nachtürlich speichert man die Ergebnis dabei innerhalb der Klasse.

chryztyne

Frischling

  • »chryztyne« ist der Autor dieses Themas

Beiträge: 8

Wohnort: Bad König

  • Private Nachricht senden

3

06.03.2010, 10:01

Also erstelle ich eigentlich einfach 5 Instanzen der Klasse um auf die jeweils richtige "Liste" zugreifen zu können?

Werde ich doch gerade mal ein wenig umdenken ;)

Vielen dank :)

4

06.03.2010, 10:33

Man könnte eine Klasse ZerlegteZahl machen, die dann einzelne Variablen für die Zahlen hat. Für jede Zahl die man dann zerlegt, würde man ein Objekt der Klasse erstellen.
Ich würde zur Speicherung wahrscheinlich einen std::vector benutzen, da hat man direkten Zugriff auf alle Elemente was bei einer Liste halt nicht der Fall ist.
Lieber dumm fragen, als dumm bleiben!

chryztyne

Frischling

  • »chryztyne« ist der Autor dieses Themas

Beiträge: 8

Wohnort: Bad König

  • Private Nachricht senden

5

06.03.2010, 10:43

Aber nachdem die Korrektur der Zahlen stattgefunden hat, müssten dann die Werte ja neu geschrieben werden.

Ist das nicht mit der Liste einfacher als mit einem Vector? Da ich ja mit der Liste an jeder bestimmten Stelle Werte änder, löschen oder reinschieben könnte?!

Bei einem Vector müsste ich dann wahrscheinlich alles rausschmeissen und wieder neu reinschieben.... oder irre ich mich da jetzt? :?

6

06.03.2010, 12:13

Zitat von »"chryztyne"«

Bei einem Vector müsste ich dann wahrscheinlich alles rausschmeissen und wieder neu reinschieben.... oder irre ich mich da jetzt? :?

Jo. Ein Vector hat eine feste Größe, wenn du diese änderst musst man eine neue vector der neuen Größe erstellen und die alten Daten reinkopieren. (Wobei natürlich Techniken genutzt werden um das effizienter zu machen, wenn man z.b. ausreichend Speicher zur Verfügung hat ist der Vector meist etwas größer als gefordert um beim einfügen nicht dauernd neu erstellt werden zu müssen und beim kleiner machen wird nur so getan, als ob er kleiner würde; das läuft alles im Hintergrund und du musst dir nicht viele Gedanken darüber machen).
Wenn du bei einer Liste auf das 5te Element zugreifen willst, musst du über die ersten 4 gehen, was natürlich dauert. Wenn du aber eh alle Elemente durchgehst, z.B. um alles anzuzeigen, fällt der Nachteil natürlich wieder weg.
Bei nem Vector hat man halt immer direkten Zugriff auf jedes Element, und man muss z.B. in Schleifen keine Iteratoren benutzen, ist natürlich jedem selbst überlassen, was er schöner findet.
Lieber dumm fragen, als dumm bleiben!

chryztyne

Frischling

  • »chryztyne« ist der Autor dieses Themas

Beiträge: 8

Wohnort: Bad König

  • Private Nachricht senden

7

06.03.2010, 15:08

Na okay...

Jetzt komme ich wohl zu der Feststellung, dass ich fast alles nochmal über den Haufen werfe und mir das Buch schnappe, um nochmals fast ganz vorne anzufangen zu lesen....

Ich denke, meine Möglichkeiten sollten nach durcharbeiten des Buches zwar ausreichend sein, allerdings merke ich, dass es scheinbar gerade anders aussieht .... :cry:

Trotzdem nochmal recht herzlichen dank.... :)

Werbeanzeige