myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   Rekursion C++ (https://mygully.com/showthread.php?t=2022259)

ponchosi 05.04.10 11:45

Rekursion C++
 
Ich soll ne rekursiv definierte Problemstellung programmieren. Es geht um folgendes :

Eine Haltestelle wird zum Zeitpunkt X das erste mal und zum Zeitpunkt Y das letzte mal.

Wenn nach n Minuten ein Bus hält, hält auch einer nach n+12 und einer nach 2n+5 Minuten.
Nun soll das Programm angeben, ob zu einem Zeitpunkt Z ein Bus hält.


Eingegeben werden X, Y und Z.

Meine herangehensweise bisher:

Zuerst berechne ich die Differenz von Z zu X :
z.B

X = 8:00 und Z = 14:00

Z - X = 6 Stunden

und dann auf minuten n = 6 * 60 .

Soooo

Wenn nun bei den Minuten rest 0 rauskommt bei mod10, dann kann ich ja gleich ausspucken "ja es fährt ein bus"

Sollte das nicht der Fall sein, kommt ne rekursive Funktion ins Spiel :

Um zu berechen ob nach n minuten ein bus fährt, muss ich schauen ob nach n-12 und nach (n-5)*1/2 minuten ein Bus fährt.
um zu schauen ob da ein bus fährt muss ich gucken ob nach (n-24) oder nach ((n-5)*1/2)-5)*1/2 minuten ein Bus fährt usw.

Und da is mein Problem ! Wie packe ich das in ne rekursive Funktion ?

funktion(n)

if(n<=0)
return 0;

else
n_eins = funktion(n-12) ;
n_zwei = funktion((n-5)*1/2) ;

?

wenn n = 0 dann fährt zum Zeitpunkt Z ein Bus.

vllt brauch ich nur einen kleinen Schubs !? ;)

Schonmal vielen Dank für eure Hilfe ! :)

gosha16 05.04.10 12:29

wie hast du denn die Abfahrzeiten der Busse gegeben? Als Datei? Als Array?

ponchosi 05.04.10 12:39

Zitat:

Zitat von gosha16 (Beitrag 20646777)
wie hast du denn die Abfahrzeiten der Busse gegeben? Als Datei? Als Array?


Also vom User eingegeben wird nur der Zeitpunkt X wann der erste Bus fährt, Zeitpunkt Y (wichtig für ne andere Teilaufgabe) wann der letzte Bus fährt und Zeitpunkt Z wann man gerne fahren möchte.
Da reichen ja normale int Variablen. Ich gebe die Anweisung, das der User die Uhrzeit ohne Doppelpunkt schreiben soll, also aus 13:15 wird 1315 !
Damit berechne ich dann n (siehe 1. post)

Aus diesen Daten muss ich rekursiv bestimmen, ob zu diesem Zeitpunkt Z ein Bus fährt oder nicht. Die einzelnen Zeiten, wann ein Bus fährt, muss ich nicht speichern, die sind nicht von belang !

Das wird ja ein Binärbaum sein, also müsste ich, nach meinem Verständnis, 2 rekursive Funktionsaufrufe in der Funktion haben !?

lg

urga 06.04.10 01:50

ah, lecker [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] :) urgas liebling ....
du hattest es ja schon fast. nur fehlt deiner funktion ein zweiter parameter. und zwar der startpunkt des jeweiligen busses...
Zitat:

also müsste ich, nach meinem Verständnis, 2 rekursive Funktionsaufrufe in der Funktion haben !?
ja.

ponchosi 07.04.10 17:39

Super, danke dir :) Hat funktioniert !

Deinen Namen merk ich mir ;)

lg


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.