Programmierbeispiel Schräger Wurf

Wird ein Gegenstand unter einem Winkel (a) abgeworfen, so ergibt sich seine horizontale Bewegung aus der Formel:

sx = v * cos(a) * t      ( v....Geschwindigkeit in m/s, t....Zeit in s )

 

Die vertikale Bewegung berechnet sich aus der Formel:

sy = v * sin(a) * t - 5 * t2

 

Um auf m/s zu kommen, muss die Geschwindigkeit durch 3,6 dividiert werden.

Die Zeit soll schrittweise um 0,1 sek. erhöht werden bis der Gegenstand ( bei sy=0 ) am Boden ist.

 

Eingabe: Geschwindigkeit und Winkel

Ausgabe: Tabelle ( Zeit, Weite, Höhe )

 

So könnte eine mögliche Lösung aussehen:

namespace schraeger_wurf
{
    class Program
    {
        static void Main(string[] args)
        {
            double v0, a, sx, sy=0,t=0;

            Console.WriteLine("Eingabe der Abwurfgeschwindigkeit und des Winkels\n");
            Console.Write("Abwurfgeschwindigkeit = ? ");
            v0 = Convert.ToSingle(Console.ReadLine());

            Console.Write("Abwurfwinkel = ? ");
            a = Convert.ToDouble(Console.ReadLine());

            Console.ForegroundColor = ConsoleColor.Green;

            Console.WriteLine("\nZeit\t\tWeite\t\tHöhe");

            Console.WriteLine("------------------------------------");

            while (sy >= 0)
            {
                sx = (v0 / 3.6) * Math.Cos(a * Math.PI / 180) * t;
                sy = (v0 / 3.6) * Math.Sin(a * Math.PI / 180) * t - (5 * Math.Pow(t, 2));

                if (sy >= 0)
                {
                    Console.WriteLine("{0:F1}\t\t{1:F2}\t\t{2:F2}", t, sx, sy);

                    t = t + 0.1;
                }
                else 
                {
                    Console.ReadLine();
                }
            } 
        }
    }
}