unendlich viele Objekte

Apollo

Grünschnabel
Hallo ich habe da mal eine Frage:
Ich will ein art stausimulation programmieren, in der eine unbestimmte Anzahl Autos auf einer einspurigen Straße von einem Punkt x zu einem Punkt y fahren. Und zwischendurch ein Auto chaotisch fährt(bremst plötzlich, etc.).
Ich habe schon eine Auto klasse geschrieben, aber ich weiß nicht wie ich eine unbestimmte Anzahl von Autos erstellen kann.
 
Auf jedenfall, brauchst du da die Random Formel:

Code:
/*
 Ich würde vorschlagen, du machts in der Klasse "Auto" einen
 Wert, der sagt, dass das Auto sichtbar ist.
 z. B. 

 Auto myauto:

 myauto.sichtbar = true:

 Oder so.


*/

#include "Auto.h"
#include <stdlib.h>

int main()
{
 randomize();
 int unbestimmt = random(50);
 Auto mycars[50];

 for (int i; i > unbestimmt;i++)
  mycars[i].sichtbar = true;
 
 return 0; 
}
Wo ich mir jetzt nicht so sicher bin, ist ob die RND-Formel so klappt.
Schau einfach mal im Thread "Random", oder so.

Mit binären Grüßen,

bitmaster
 
mittels malloc und realloc kann man arrays dynamisch im heap anlegen und die größe bzw anzahl der elemente verändern! (MS visual c++ malloc.h, ISO c++ alloc.h)

ansonsten kannst du auch andere datenstrukturen statt normaler arrays benutzen (verkettete listen..)

ps: sichtbare und unsichtbare autos ist keine besonders elegante lösung, wenn es wirklich eine simulation darstellen soll

viel erfolg...vielleicht kann du ja mal ergebnisse präsentieren!!
 
Genau das mit den verketteten Listen habe ich noch nicht ganz durchschaut. Wie soll das funktionieren?
 
@bitmaster: dein vorschlag war völlig i.O. ! man muss ja nicht immer gleich elegant programmieren

@apollo:

professoren können das eigentlich gar nicht richtig erklären! da kommt nur fachchinesisch rüber :)

für eine verketttete liste baust du dir eine struktur oder klasse
die membervariablen und funktionen enthält die du brauchst, also bis hierhin ganz normal!
dazu kommt dann mindestens ein zeiger auf deine klasse in deine klasse hinein (heisst meistens next)
für ringverkettete listen kannst du auch noch einen previous zeiger in deine klasse einbauen!

in den zeigern speicherst du dann deine adressen vom vorgänger bzw. nachfolger

hier ein kurzes beispiel:

Code:
class auto{
   public:
   int anz_tueren;
   int anz_zylinder;

   auto* next;
   auto* prev;

   void auto(){}
}

Code:
auto* meinauto;
auto* nachbarauto;

meinauto=new auto();

nachbarauto=new auto();

meinauto->next=nachbarauto;
nachbarauto->prev=meinauto;

meinauto->next.anz_tueren=5;

so in der art sieht dann die benutzung einer verketteten liste aus!
falls das mit den zeigern nicht so genau hinhaut sag einfach, dann schau ich mir das sonntag nochmal zuhause an, am laptop hab ich kein c++ laufen :( nur java und da is das mit den zeigern nicht :)
 
Zuletzt bearbeitet:
Danke

Danke Leute ich werde das jetzt mal mit der verketteten Liste probieren und dann mal sehen was rauskommt!

Allerdings eine Frage hätte ich noch: In deinem Beispiel hast du jetzt nur 2 Autos. Aber was ist, wenn ich mehrere haben will und nicht jedem einen Namen geben möchte, weil es einfach zu viele sind. Und ich meine, wenn ich arrays benutze wäre das ganze verketten doch sinnlos, oder?
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück