[Problemzone] C Programmierung - Schleife mit Gleichung

Hier wird geholfen...

Moderator: Moderatoren

Benutzeravatar
Der_Stratege
Hastatus Posterior
Hastatus Posterior
Beiträge: 1022
Registriert: 5. Dezember 2010 22:00
Wohnort: München

[Problemzone] C Programmierung - Schleife mit Gleichung

Beitragvon Der_Stratege » 18. Mai 2016 18:40

Hallo alle miteinander,

ich versuche gerade C Programmieren zu lernen und hänge gerade bei einer Übungsaufgabe fest. Es soll mithilfe von C die Geschwindigkeit einer Fallenden Kugel nach einer bestimmten Zeit ausgerechnet und ausgegeben werden. Ich bin das ganze mit einer FOR-Schleife angegangen und komme ums ver****en nicht weiter, hoffentlich kann mir jemand von euch helfen.

Grundsätzlich sieht meine Schleife so aus:

Code: Alles auswählen

 for( t = k; t <= k + 1.00; t += dt)
    {
        printf("%.2f \t", t);

       
        vg = vt + t * (9.81 - 5.6 * (1/10 * 1/10 * 1/10) * (vt * vt));


        printf("%.4f \n", vt);

    }

(nur ein Ausschnitt)

Das Problem ist jetzt, dass er diesen vg Wert nehmen soll und beim nächsten Schleifendurchlauf als vt benutzt. Damit soll die Kugel sich einer Maximalgeschwindigkeit annähren, da sie von der Luftreibung ausgebremst wird. Ich komme aber nicht drauf, wie genau ich das machen soll.

Hoffentlich findet sich hier jemand der sich gut genug mit C auskennt
"Für den Triumph des Bösen reicht es, wenn die Guten nichts tun" -Edmund Burke (1729-97)

Benutzeravatar
Horgan
Moderator
Moderator
Beiträge: 12279
Registriert: 4. November 2010 21:41
Wohnort: Berlin
:
Team-SZ Gründer/Eigentümer der SZ
Kontaktdaten:

Re: [Problemzone] C Programmierung - Schleife mit Gleichung

Beitragvon Horgan » 18. Mai 2016 19:46

Habe C endlang nicht mehr benutzt (das letzte Mal in den 90ern), insofern bin ich wahrscheinlich keine große Hilfe.

Aber-
Was genau machst Du mit "dt" im Schleifeneinstieg - wo kommt der Wert her und was machst Du weiter damit?
Wo wird "vt" mit einem Wert versorgt?

Benutzeravatar
Der_Stratege
Hastatus Posterior
Hastatus Posterior
Beiträge: 1022
Registriert: 5. Dezember 2010 22:00
Wohnort: München

Re: [Problemzone] C Programmierung - Schleife mit Gleichung

Beitragvon Der_Stratege » 18. Mai 2016 22:58

dt ist in dem fall 0.01, heißt für jede 0.01te Sekunde gibt es ein neues Vg. Vt fängt zunächst mit Vt = 0 an. Danach soll es so weiter gehen, das gilt:
V(t+dt) = vt + dt * (9.81 - 5.6 * (1/10 * 1/10 * 1/10) * (vt * vt));

Als Beispiel:

V(o) = 0,
V(0.01) = 0.0981 (oder so)
V(0.02) = 0.0981 + dt * (9.81 - 5.6 * (1/10 * 1/10 * 1/10) * (0.0981 * 0.0981));
V(0.03) = V(0.02) + dt * (9.81 - 5.6 * (1/10 * 1/10 * 1/10) * (V(0.02) *V(0.02)));

usw.

Ich hadere wie gesagt an der Ausführung dieser Schleife

Edit: hab das ganze jetzt mit einem Array gelöst, ging sehr viel einfacher, hatte nen Fehler bei der Geichung (die Klammer gehören da nicht hin bei den Brüchen und dem danach, kp warum er da so gezickt hat ^^)
Zuletzt geändert von Der_Stratege am 18. Mai 2016 23:56, insgesamt 1-mal geändert.
"Für den Triumph des Bösen reicht es, wenn die Guten nichts tun" -Edmund Burke (1729-97)

Benutzeravatar
Derc
Princeps Posterior
Princeps Posterior
Beiträge: 1247
Registriert: 9. Dezember 2010 12:53
Wohnort: localhost
:
Teilnahme an einem Contest

Re: [Problemzone] C Programmierung - Schleife mit Gleichung

Beitragvon Derc » 18. Mai 2016 23:26

Ich geh mal nicht auf die weitere Logik von deinem Codeauszug ein, sondern nur auf den Problemteil, um den du gebeten hast.
So wie es aussieht, hast du ja scheinbar schon alle Variablen oben außerhalb der Schleife definiert. Gut.

Dürfte es nicht ganz simpel reichen, wenn du unter deiner Berechnung schreibst:

Code: Alles auswählen

vt = vg;
?

Das Programm überschreibt dann vt mit der Lösung aus der Berechnung und nutzt diesen Wert dann im nächsten Schleifendurchgang (wobei beim allerersten Durchlauf der Schleife der Startwert 0 verwendet wird.). Ist doch das, was du wolltest, oder?

Ist natürlich nur sinnig, wenn du den ursprünglichen Wert in vt nicht mehr benötigst (wovon ich mal ausgeh'). Ansonsten einfach eine extra Variable zum Berechnung oder eine Bedingung dazunehmen.
Hoffe, das war ein wenig hilfreich. ^^
:strategie_zone_231:

Benutzeravatar
pogotorte
Praefectus Fabrum
Praefectus Fabrum
Beiträge: 4805
Registriert: 4. November 2010 18:19
Wohnort: beim Stronomenkönig
:
Modder Team-SZ Gründer/Eigentümer der SZ

Re: [Problemzone] C Programmierung - Schleife mit Gleichung

Beitragvon pogotorte » 19. Mai 2016 16:44

Die Maximalgeschwindigkeit ist konstant, oder? Dh, von dt hängt ab wie oft die Schleife durchlaufen wird. for-Schleifen nimmt man aber eher als Zählschleifen wenn die Anzahl der Durchläufe bekannt ist.

Ich hätte wohl eine do { } while(v_max > v) - Variante gewählt.
Bild
Forenregeln.......................................................................................Wer Hunde liebt, der wird auch Menschen mögen