C# :: Aufgabe #307 :: Lösung #1
5 Lösungen

#307
Überholen: benötigte Strecke und Dauer berechnen
Anfänger - C#
von Waldgeist
- 22.04.2020 um 10:55 Uhr
Es soll ein Programm für die Berechnung von Überhol-weg und Überhol-zeit (bei angenommener konstanten Geschwindigkeit) erstellt werden.
Dazu werden die Länge der beiden Fahrzeuge (l1 und l2) und deren Geschwindigkeit (v1 und v2) angegeben.
Aus diesen Daten ermitteln wir den Sicherheitsabstand (a).
Dieser soll der halben Geschwindigkeit entsprechen. Also bei 100 km/h sind 60 m Sicherheitsabstand einzuhalten.
Die benötigte Strecke berechnen wir dann nach folgender Formel:
s = v1 / (v1−v2) * (l1+l2+2*a)
Weitere Information findet ihr hier: Video
Viel Spaß!
Dazu werden die Länge der beiden Fahrzeuge (l1 und l2) und deren Geschwindigkeit (v1 und v2) angegeben.
Aus diesen Daten ermitteln wir den Sicherheitsabstand (a).
Dieser soll der halben Geschwindigkeit entsprechen. Also bei 100 km/h sind 60 m Sicherheitsabstand einzuhalten.
Die benötigte Strecke berechnen wir dann nach folgender Formel:
s = v1 / (v1−v2) * (l1+l2+2*a)
Weitere Information findet ihr hier: Video
Viel Spaß!
#1

von JKooP (18090 Punkte)
- 23.04.2020 um 10:21 Uhr
NET Core 3.x
C#-Code

using System; namespace CS_Aufgabe_307_Fahrschule { public enum TypSicherheitsabstand { innerorts = 1, ausserorts } public class Fahrzeug { public Fahrzeug(string bezeichnung, double laenge, int geschwindigkeit, TypSicherheitsabstand typSichhAbst) { Bezeichnung = bezeichnung; Laenge = laenge; Geschwindigkeit = geschwindigkeit; TypSichhAbst = typSichhAbst; } public string Bezeichnung { get; } public double Laenge { get; } public int Geschwindigkeit { get; } public TypSicherheitsabstand TypSichhAbst { get; } public int Sicherheitsabstand => (int)Math.Ceiling(Geschwindigkeit / 3.6 * (int)TypSichhAbst / 5) * 5; public int Bremsweg => (int)Math.Ceiling((Math.Pow(Geschwindigkeit, 2) / 100) / 5) * 5; public int Reaktionsweg => (int)Math.Ceiling((Geschwindigkeit / 10 * 3.0) / 5) * 5; public int Anhalteweg => Bremsweg + Reaktionsweg; public override string ToString() => $"{Bezeichnung} ({TypSichhAbst}):\nGeschwindigkeit: {Geschwindigkeit}km/h" + $"\nSicherheitsabstand: {Sicherheitsabstand}m\nAnhalteweg: {Anhalteweg}m\n"; } public class Ueberholvorgang { private readonly Fahrzeug f1; private readonly Fahrzeug f2; public Ueberholvorgang(Fahrzeug langsamesFz, Fahrzeug schnellesFz) { f1 = langsamesFz; f2 = schnellesFz; } public int Ueberholstrecke { get { if (f2.Geschwindigkeit < f1.Geschwindigkeit || f2.Geschwindigkeit == f1.Geschwindigkeit) return 0; else return (int)(f2.Geschwindigkeit / (f2.Geschwindigkeit - f1.Geschwindigkeit) * (f2.Laenge + f1.Laenge + f2.Sicherheitsabstand + f1.Sicherheitsabstand)); } } public int Ueberholzeit { get { if (f2.Geschwindigkeit == 0 || Ueberholstrecke == 0) return 0; else return (int)(Ueberholstrecke / (f2.Geschwindigkeit / 3.6)); } } public override string ToString() => $"\nDas Fahrzeug '{f2.Bezeichnung}' benötigt für den Überholvorgang {Ueberholstrecke}m sowie {Ueberholzeit}s.\n"; } class Program { static void Main(string[] args) { var f1 = new Fahrzeug( "Audi", 4.25 , 80, TypSicherheitsabstand.ausserorts); var f2 = new Fahrzeug( "BMW", 4.75, 100, TypSicherheitsabstand.ausserorts); var uv = new Ueberholvorgang(f1, f2); Console.WriteLine(f1); Console.WriteLine(f2); Console.WriteLine(uv); } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1