<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[problem, wie geht man hier vor? eine recht interessante aufgabe]]></title><description><![CDATA[<p>Hi Leute, ich habe hier ne lustige Aufgabe bekommen, weiss aber ni so genau wie ich da ran gehn soll bzw muss...</p>
<p>Ich soll eine FlughafenSimulation nach folgender Beschreibung realisieren:</p>
<p>zufällig sollen flugzeuge erscheinen die einen service (starten oder landen) in anspruch nehmen wollen. Luftkontrolle soll den Betrieb der Flugzeuge in der Luft übernehmen, sie leitet auf wlandung wartende flugzeuge über den flughafen um. bodenkontrolle kümmert sich um die flugzeuge die sich am boden befinden und leitet diese um. dann gibts noch flughafen, flughafen verwaltet die warteschlangen und kontrollen des verkehrs am boden und in der luft. flughafen unterliegt auch die rollbahn.<br />
die flugzeiten und verzögerungen sollen durch eine globale zeit simuliert werden. das ganze ist als scheduling problem mit warteschlangen zu implementieren.</p>
<p>die flugzeuge sollen zufällig erscheinen und entweder in warteschlange für starten oder für landen gesetzt werden. die flugzeuge haben eine maximale restflugzeit, wenn diese abläuft (weil so lange in der schleife) dann stürzen sie ab. und sonst sind noch n paar ausgaben wie: flugzeug kommt an und will landen, bla bla bla</p>
<p>wie in gottes namen geh ich da vor??</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/181579/problem-wie-geht-man-hier-vor-eine-recht-interessante-aufgabe</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 11:59:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/181579.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 15 May 2007 10:34:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to problem, wie geht man hier vor? eine recht interessante aufgabe on Tue, 15 May 2007 10:34:25 GMT]]></title><description><![CDATA[<p>Hi Leute, ich habe hier ne lustige Aufgabe bekommen, weiss aber ni so genau wie ich da ran gehn soll bzw muss...</p>
<p>Ich soll eine FlughafenSimulation nach folgender Beschreibung realisieren:</p>
<p>zufällig sollen flugzeuge erscheinen die einen service (starten oder landen) in anspruch nehmen wollen. Luftkontrolle soll den Betrieb der Flugzeuge in der Luft übernehmen, sie leitet auf wlandung wartende flugzeuge über den flughafen um. bodenkontrolle kümmert sich um die flugzeuge die sich am boden befinden und leitet diese um. dann gibts noch flughafen, flughafen verwaltet die warteschlangen und kontrollen des verkehrs am boden und in der luft. flughafen unterliegt auch die rollbahn.<br />
die flugzeiten und verzögerungen sollen durch eine globale zeit simuliert werden. das ganze ist als scheduling problem mit warteschlangen zu implementieren.</p>
<p>die flugzeuge sollen zufällig erscheinen und entweder in warteschlange für starten oder für landen gesetzt werden. die flugzeuge haben eine maximale restflugzeit, wenn diese abläuft (weil so lange in der schleife) dann stürzen sie ab. und sonst sind noch n paar ausgaben wie: flugzeug kommt an und will landen, bla bla bla</p>
<p>wie in gottes namen geh ich da vor??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1285267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1285267</guid><dc:creator><![CDATA[theTOASTA]]></dc:creator><pubDate>Tue, 15 May 2007 10:34:25 GMT</pubDate></item><item><title><![CDATA[Reply to problem, wie geht man hier vor? eine recht interessante aufgabe on Tue, 15 May 2007 10:45:50 GMT]]></title><description><![CDATA[<p>Kommt darauf an wie du das entwerfen willst.</p>
<p>OOP wäre folgendes. Du machst aus jedem Subjekt in der Beschreibung eine Klasse mit entsprechenden Instanzen (eben n-Flugzeuge, m-Luftkontrollen, k-Flughäfen, k-Bodenkontrollen). Aus allen Prädikaten machst du Methoden der Klassen. Dann brauchst du eben noch einen Flugzeug-Generator und eine Hauptschleife, die alles verbindet.</p>
<p>Prozess basiert (ala Erlang) wäre dagegen wohl aus jedem interagierenden Subjekt ein Prozess zu machen und jedes Prädikat in eine Nachricht zu verwandeln <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Ich hoffe ich hab dir einen sinnvollen Anstoß gegeben.</p>
<p>(btw. versuch bitte bessere Topics zu benutzen. Etwas ala &quot;Software-Design einer Luftraum-Simulation&quot; wäre zumindest ein bisschen hilfreicher :))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1285275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1285275</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Tue, 15 May 2007 10:45:50 GMT</pubDate></item><item><title><![CDATA[Reply to problem, wie geht man hier vor? eine recht interessante aufgabe on Tue, 15 May 2007 10:51:35 GMT]]></title><description><![CDATA[<p>eine super antwort...<br />
warum ich ich den namen des themas so gewählt habe weiss ich auch nicht. wollte es interessanter machen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>also das programm soll OOP sein als konsolenapplication.<br />
hast mir schon sehr geholfen! mal sehn wie weit ich komme...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1285279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1285279</guid><dc:creator><![CDATA[theTOASTA]]></dc:creator><pubDate>Tue, 15 May 2007 10:51:35 GMT</pubDate></item><item><title><![CDATA[Reply to problem, wie geht man hier vor? eine recht interessante aufgabe on Tue, 15 May 2007 11:01:22 GMT]]></title><description><![CDATA[<p>wie mach ich das mit den warteschleifen?? bzw wie soll ich vorgehen, damit mehrere flugzeuge verarbeitet werden könnem?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1285284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1285284</guid><dc:creator><![CDATA[theTOASTA]]></dc:creator><pubDate>Tue, 15 May 2007 11:01:22 GMT</pubDate></item><item><title><![CDATA[Reply to problem, wie geht man hier vor? eine recht interessante aufgabe on Tue, 15 May 2007 12:11:51 GMT]]></title><description><![CDATA[<p>Eine Wartschleife ist ja im Grunde eine <code>std::deque&lt;Flugzeug&gt; warteschleife</code> .</p>
<p>Du pushst eben am Anfang rein und popst Flugzeuge am Ende raus, wenn du Timeslots zum landen frei hast.</p>
<p>(wobei du je nach wenn du keine first-come-first-serve haben willst (zB weil du den Benzin-Stand berücksichtigen willst) eine <a href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/classstd_1_1priority__queue.html" rel="nofollow">std::priority_queue</a> nehmen solltest)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1285338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1285338</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Tue, 15 May 2007 12:11:51 GMT</pubDate></item><item><title><![CDATA[Reply to problem, wie geht man hier vor? eine recht interessante aufgabe on Tue, 15 May 2007 12:21:42 GMT]]></title><description><![CDATA[<p>Vielleicht noch zwei passende Stichwörter, die mir hier relevant erscheinen:</p>
<p>1. Ereignisorientierte Simulation</p>
<p>2. Prozessorientierte Simulation</p>
<p>In dem Zusammenhang gibt es ganz allgemeine Herangehensweisen an solche Probleme. Und entsprechend gibt es auch allgemeine Frameworks, die einen dabei unterstützen. Unter Java kenne ich da zum Beispiel <a href="http://www.desmoj.de/" rel="nofollow">DesmoJ</a>. Für C++ wird es ähnliche Frameworks geben. Müsstest mal selbst suchen. Vielleicht ist es sinnvoll, sich vom Design des Programms etwas daran zu orientieren, wie das in diesen Frameworks gemacht wird.</p>
<p>...ok: Andererseits ist das für so ne kleine Aufgabe sicherlich Overkill.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1285344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1285344</guid><dc:creator><![CDATA[Gregor]]></dc:creator><pubDate>Tue, 15 May 2007 12:21:42 GMT</pubDate></item><item><title><![CDATA[Reply to problem, wie geht man hier vor? eine recht interessante aufgabe on Tue, 15 May 2007 21:49:16 GMT]]></title><description><![CDATA[<p>theTOASTA schrieb:</p>
<blockquote>
<p>wie in gottes namen geh ich da vor??</p>
</blockquote>
<p>Nun, zunächst überlegst Du was Input und Output von Deinem Programm ist.</p>
<p>Dann versuchst Du sogenannte <a href="http://de.wikipedia.org/wiki/Anwendungsfall" rel="nofollow">Anwendungsfälle (Use Cases)</a> zu beschreiben (in Worten). Jeder Use Case beginnt mit einem Ereignis (kann auch das Verstreichen einer Zeit sein - z.B. Timer) und endet mit einem Nutzen für den Anwender.</p>
<p>Z.B. Taschenrechner - Ereignis ist: Anwender tippt zwei Summanden mit '+' getrennt, als Ergebnis wird die Summe ausgegeben. Der Nutzen für den Anwender besteht darin, dass er die Summe ablesen kann.</p>
<p>Dann suchst Du alle Hauptwörter in Deiner Beschreibung heraus, denn das sind potentielle Kandidaten für Klassen. Aus Deinen Use Cases sollte klar werden wie sie interagieren.<br />
Für jede Klasse kannst Du Beziehungen definieren (zu welcher anderen Klasse? welcher Art? welche Kardinalität (Anzahl)?) und eine Verantwortung, die die Klasse hat (siehe auch <a href="http://www.dfpug.de/konf/konf_1998/02_oop/d_crc/d_crc.htm" rel="nofollow">CRC</a>). Letzteres ist nicht mit ihrer Aufgabe zu verwechseln.</p>
<p>Dann muss man sich noch für einen Rahmen entscheiden; das wurde schon erwähnt, es wird wahrscheinlich eine Hauptschleife, die mit jedem Durchlauf ein Zeitintervall simuliert.</p>
<p>Versuch' mal einen Use Case - oder zumindest einen Teil davon - zu beschreiben.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1285812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1285812</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 15 May 2007 21:49:16 GMT</pubDate></item><item><title><![CDATA[Reply to problem, wie geht man hier vor? eine recht interessante aufgabe on Tue, 15 May 2007 22:02:49 GMT]]></title><description><![CDATA[<p>Interessante Aufgabe!</p>
<p>Es ist imo irgendwie verlockend die Flugzeuge jeils in einem eigenen Thread &quot;fliegen&quot; zu lassen; eine Schleife koennte den Benzinvorrat zyklisch dekrementieren und bei entsprechender Dringlichkeit Nachrichten(&quot;queue me&quot;, &quot;prioritze me&quot;...) an einen Hauptthread senden der die Warteschleife managed.</p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1285816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1285816</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Tue, 15 May 2007 22:02:49 GMT</pubDate></item><item><title><![CDATA[Reply to problem, wie geht man hier vor? eine recht interessante aufgabe on Wed, 16 May 2007 11:39:06 GMT]]></title><description><![CDATA[<p>Danke für die vielen Tips!! Bin schon viel weiter gekommen, jetz hab ich allerdings ein Problem mit den queues... wie muss ich die implementieren? habe mit templates ni so die erfahrung...<br />
gibts da irgendwo gute beispiele?</p>
<p>kann ich überhaupt ein Objekt (z.b.Flugzeug) is eine solche queue ablegen? ja oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286087</guid><dc:creator><![CDATA[theTOASTA]]></dc:creator><pubDate>Wed, 16 May 2007 11:39:06 GMT</pubDate></item><item><title><![CDATA[Reply to problem, wie geht man hier vor? eine recht interessante aufgabe on Wed, 16 May 2007 11:46:44 GMT]]></title><description><![CDATA[<p>Die brauchst du nicht zu implementieren, die liefert die Standard-Bibliothek schon mit - die Klasse queue&lt;&gt; stellt eine einfache (FIFO-)Warteschlange dar, priority_queue&lt;&gt; eine Prioritäts-Warteschlange (immer der höchstwertige Eintrag kann als nächstes entnommen werden).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286096</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 16 May 2007 11:46:44 GMT</pubDate></item><item><title><![CDATA[Reply to problem, wie geht man hier vor? eine recht interessante aufgabe on Wed, 16 May 2007 11:56:06 GMT]]></title><description><![CDATA[<p>kann ich bei der prio festlegen nach welchem parameter des objekts die auswahl erfolgt?</p>
<p>gibts irgendwo gute beispiele wo ich mir mal anschauen kann wie das genau auszusehen hat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286103</guid><dc:creator><![CDATA[theTOASTA]]></dc:creator><pubDate>Wed, 16 May 2007 11:56:06 GMT</pubDate></item><item><title><![CDATA[Reply to problem, wie geht man hier vor? eine recht interessante aufgabe on Wed, 16 May 2007 12:01:33 GMT]]></title><description><![CDATA[<p>Ja, der gibst du als Template-Parameter einen Funktor, der vergleichen soll, welches von zwei Objekten &quot;größer&quot; ist (die Defaultvorgabe ist &quot;größer als&quot;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286113</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 16 May 2007 12:01:33 GMT</pubDate></item><item><title><![CDATA[Reply to problem, wie geht man hier vor? eine recht interessante aufgabe on Wed, 16 May 2007 16:09:56 GMT]]></title><description><![CDATA[<p>wie geht das genau?<br />
sorry, dass ich mich etwas anstelle, aber der mensch wächst mit seinen herausforderungen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> trotzdem braucht man manchmal hilfe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286312</guid><dc:creator><![CDATA[theTOASTA]]></dc:creator><pubDate>Wed, 16 May 2007 16:09:56 GMT</pubDate></item><item><title><![CDATA[Reply to problem, wie geht man hier vor? eine recht interessante aufgabe on Wed, 16 May 2007 16:26:57 GMT]]></title><description><![CDATA[<p>du überlädst einfach den &quot;operator&lt;&quot;</p>
<p>also so:</p>
<pre><code class="language-cpp">bool operator&lt;(const Flugzeug&amp; o1,const Flugzeug &amp; o2)
{
    return o1.benzinstand&lt;o2.benzinstand;//Beispiel
}
</code></pre>
<p>der queue selbst brauchst du dann nichts mehr übergeben.<br />
Problematisch wird das nur dann, wenn du bei verschiedenen queues flugzeuge nach anderen Gesichtspunkten sortieren willst. zb Passagiere, dann brauchst du eine andere Funktion.</p>
<p>das geht dann so:</p>
<pre><code class="language-cpp">bool vergleichePassagierzahl(const Flugzeug&amp; o1,const Flugzeug &amp; o2)
{
    return o1.passagierzahl&lt;o2.passagierzahl;
}

//und die queue sieht dann so aus:
std::priority_queue&lt;Flugzeug,std::vector&lt;Flugzeug&gt;,vergleichePassagierzahl&gt; queue;
</code></pre>
<p>aber aufpassen: die priority_queue testet nur ein einziges mal, an welcher stelle ein Objekt gehört, ändert sich nach dem einfügen was an der reihenfolge, ist das der queue absolut egal.</p>
<p>Was auch nicht geht, ist einfach die vergleichsfunktion zu wechseln. die funktion wählst du einmal, und das bleibt dann.</p>
<p>hier mal die referenz der queue(auf der seite findest du auch informationen zu allen anderern containern):<br />
<a href="http://www.sgi.com/tech/stl/priority_queue.html" rel="nofollow">http://www.sgi.com/tech/stl/priority_queue.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286316</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Wed, 16 May 2007 16:26:57 GMT</pubDate></item><item><title><![CDATA[Reply to problem, wie geht man hier vor? eine recht interessante aufgabe on Fri, 18 May 2007 06:58:37 GMT]]></title><description><![CDATA[<p>Der zweite Code wird nicht so ganz funktionieren - priority_queue erwartet einen Typ (also Funktor):</p>
<pre><code class="language-cpp">//Variante 1:
std::priority_queue&lt;Flugzeug,std::vector&lt;Flugzeug&gt;,(bool*)(const Flugzeug&amp;,const Flugzeug&amp;)&gt; queue(vergleichePassagierzahl);

//Variante 2 (vermutlich eleganter):
struct vergleichePassagierzahl
{
  bool operator()(const Flugzeug&amp; o1,const Flugzeug &amp; o2)
  {
    return o1.passagierzahl&lt;o2.passagierzahl;
  }
};

std::priority_queue&lt;Flugzeug,std::vector&lt;Flugzeug&gt;,vergleichePassagierzahl&gt; queue;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1287168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1287168</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 18 May 2007 06:58:37 GMT</pubDate></item><item><title><![CDATA[Reply to problem, wie geht man hier vor? eine recht interessante aufgabe on Sun, 20 May 2007 20:49:04 GMT]]></title><description><![CDATA[<p>ok, das sollte soweit funktionieren... wie bekomm ich eine referenz auf das mit der höchsten priorität versehene objekt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288746</guid><dc:creator><![CDATA[theTOASTA]]></dc:creator><pubDate>Sun, 20 May 2007 20:49:04 GMT</pubDate></item></channel></rss>