Tudnátok segíteni az alábbi programban? (c++)
Készítsen objektummodellt az autópálya forgalmának modellezésére!
Egy L cellára osztott autópályán N autó van. Egy cellában csak egy autó tartózkodhat egyszerre, így L-N cella üres. Minden autónak van egy egész értékű sebessége.
A szimulációt ciklusonként végezzük.
Minden ciklusban minden autóra elvégezzük a következő műveleteket:
1. Ha egy autó sebessége még nem érte el a maximumot (5), akkor a sebességét eggyel megnöveljük.
2. Ha egy autó előtt levő üres cellák száma (az előtte levő autóig)kisebb, mint a sebessége, akkor az autó sebességet lecsökkentjük az előtte levő üres cellák számának megfelelő értékre.
3. Egy adott p(=0.15) valószínűséggel lecsökkentjük a mozgó autók sebességet eggyel. (Vezetők figyelmetlensége).
4. Minden autót előremozgatunk annyi cellával, amennyi a sebessége.
Egyszerű karakteres kimenetet feltételezve "rajzolja ki" az autópálya állapotát egy-egy szimulációs ciklus után.
Eredetileg úgy akartam, hogy egyetlen osztályt csinálok, melyben lesz egy tetszőleges méretű tömb és ebben, az üres cellák 0-ák lennének az autók pedig a sebességüknek megfelelő érték.
De a tanár problémája ezzel az volt, hogy nem objektummodell.
Ő azt javasolta, hogy legyen egy Autopalya,Cella,Auto osztály és ezek között a megfelelő osztálykapcsolatok:
(öröklés, asszociáció, kompozíció, aggregáció)
Szóval eben kéne segítség, hogy ezek hogy is nézhetnének ki?És a fenti 4 függvény mind az Autopalya class-ban legyen?
Legyen egy Autó osztályod, aminek van ID-je és sebessége.
Legyen egy Cella osztályod is, aminek mondjuk ID-je van és egy Autó objektumot tartalmaz.
Aztán kell még egy Autópálya osztály, ami tartalmazza cella objektumok egy listáját.
Utána pedig össze lehet őket drótozni.
Miért ne lehetne megoldani?
Ha már úgy is kell konstruktort írni, akkor az autópálya osztály konstruktora lehetne a pálya hossza. Először bekéred a hosszt, majd létrehozod az objektumot.
Valahogy így?Vagy ez nagyon rossz?
class Auto{
protected:
int sebesseg;
};
class Cella{
protected:
Auto car;
};
class Autopalya{
Cella* hossz;
int meret;
public:
Autopalya(){}
Autopalya(int siz=20,int kocsi_db=5):meret(siz){
hossz=new Cella[meret];
//és ide írjam a véletlen helyekre történő autó
begenerálást?Ha igen hogy?
}
};
Valahogy így...
Generálj random számokat 0 és a méret között. Adott szám esetén nézd meg, hogy ott van-e már autó, ha nincs, akkor tegyél oda, ha van, akkor generálj egy új számot a foglalt helyett.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!