C# :: Aufgabe #307

5 Lösungen Lösungen öffentlich

Ü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ß!

Lösungen:

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

Quellcode ausblenden 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);
        }
    }
}

vote_ok
von Gisbert5020 (3120 Punkte) - 27.04.2020 um 17:31 Uhr
Quellcode ausblenden C#-Code
using System;

namespace ueberholweg
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Geben Sie die Länge des überholenden Autos in Meter ein: ");
            double l1 = Convert.ToDouble(Console.ReadLine());
            Console.Write("Geben Sie die Länge des zu überholenden Autos in Meter ein: ");
            double l2 = Convert.ToDouble(Console.ReadLine());
            Console.Write("Geben Sie die Geschwindigkeit des überholenden Autos in Km/h ein: ");
            double v1 = Convert.ToDouble(Console.ReadLine());
            Console.Write("Geben Sie die Geschwindigkeit des zu überholenden Autos in Km/h ein: ");
            double v2 = Convert.ToDouble(Console.ReadLine());
            double a = v1 / 2;
            v1 = v1 * 5 / 18;
            v2 = v2 * 5 / 18;
            double s = v1 / (v1 - v2) * (l1 + l2 + 2 * a);
            double t = s / (v1 - v2);
            Console.WriteLine("Die Überholzeit ist "+ t + " Sekunden");
            Console.WriteLine("Der Überholweg ist " + s + " Meter lang.");
            Console.ReadLine();
        }
    }
}

vote_ok
von Waldgeist (2310 Punkte) - 14.05.2020 um 11:17 Uhr
Hallo,

hier mein Lösungsvorschlag:


Quellcode ausblenden C#-Code
using System;

namespace Überholen
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            Fahrzeug Auto1 = new Fahrzeug();
            Fahrzeug Auto2 = new Fahrzeug();

            Console.WriteLine("Programm zum Berechnen eines Überholvorganges \n\n");

            Console.WriteLine("Angaben für Fahrzeug 1: ");
            Auto1.Eingabe();

            Console.WriteLine("Angaben für Fahrzeug 2: ");
            Auto2.Eingabe();

            Auto1.Ausgabe(Auto1.Laenge, Auto1.Geschwindigkeit, Auto2.Laenge, Auto2.Geschwindigkeit);

            Console.ReadKey();
        }
    }
}



die Klasse:

Quellcode ausblenden C#-Code
using System;

namespace Überholen
{
    internal class Fahrzeug
    {
        //Eigenschaften

        public double Geschwindigkeit { get; set; }
        public double Laenge { get; set; }

        //Methoden

        //Eingabe der Daten

        public void Eingabe()
        {
            Console.Write("Bitte geben Sie die Länge des Fahrzeuges in Meter an: ");
            Laenge = Convert.ToDouble(Console.ReadLine());

            Console.Write("Bitte geben Sie die Geschwindigkeit des Fahrzeuges in Km/h an:  ");
            Geschwindigkeit = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("\n");
        }

        //Bearbeiten der Eingaben, Berechnungen usw.

        public void Ausgabe(double l1, double v1, double l2, double v2)
        {
            double strecke = Strecke(l1, v1, l2, v2);
            double zeit = Zeit(v1, strecke);

            Console.Write(" Sie brauchen {0} Sekunden und eine Strecke von {1} m.", zeit, strecke);
        }

        private double Strecke(double lf1, double vf1, double lf2, double vf2)
        {
            double s;
            double a = vf1 / 2;

            s = vf1 / ((vf1 - vf2)) * (lf1 + lf2 + (2 * a));

            return s;
        }

        private double Zeit(double v, double s)
        {
            double zeit = s / (v / 3.6);
            return zeit;
        }
    }
}
vote_ok
von PhiMo (90 Punkte) - 20.07.2020 um 11:31 Uhr
Quellcode ausblenden C#-Code
using System;
					
public class Program
{
	public static void Main()
	{
		double L1;
		double L2;
		double V1;
		double V2;
				
		Console.WriteLine("Geben Sie die Länge von Fahrzeug 1 an: ");
		while(!double.TryParse(Console.ReadLine(), out L1))
		{
			Console.WriteLine("Eingabe ungültig!");
		}
		
		Console.WriteLine("Geben Sie die Länge von Fahrzeug 2 an: ");
		while(!double.TryParse(Console.ReadLine(), out L2))
		{
			Console.WriteLine("Eingabe ungültig!");
		}
		
		Console.WriteLine("Geben Sie die Geschwindigkeit von Fahrzeug 1 an: ");
		while(!double.TryParse(Console.ReadLine(), out V1))
		{
			Console.WriteLine("Eingabe ungültig!");
		}
		
		Console.WriteLine("Geben Sie die Geschwindigkeit von Fahrzeug 2 an: ");
		while(!double.TryParse(Console.ReadLine(), out V2))
		{
			Console.WriteLine("Eingabe ungültig!");
		}
		
		
		double A = Sicherheitsabstand(V1, V2);
		double S = Überholweg(L1, L2, V1, V2, A);
		double T = Überholzeit(S, V1, V2);
		
		Console.WriteLine("Sicherheitsabstand = " + A + 
						 "\nÜberholweg = " + S + 
						 "\nÜberholzeit = " + T);
		
	}
	
	public static double Sicherheitsabstand(double v1, double v2)
	{
		double a;
		
		if(v1 < v2)
		{
			a = v2 / 2;
		}
		else
		{
			a = v1 / 2;
		}
		
		return a;
	}
	
	public static double Überholweg(double l1, double l2, double v1, double v2, double a)
	{
		double s; 
		
		s = v1 / (v1 - v2) * (l1 + l2 + 2 * a);
		
		return s;
	}
	
	public static double Überholzeit(double s, double v1, double v2)
	{
		double t;
		
		if(v1 < v2)
		{
			t = s / (v2 - v1);
		}
		else
		{
			t = s / (v1 - v2);
		}
		
		return t;
	}
}
vote_ok
von Luigi (990 Punkte) - 03.11.2020 um 15:44 Uhr
Quellcode ausblenden C#-Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace _307_Ueberholen
{
    class Program
    {
        static void MyWeg()
        {
            Console.WriteLine("Meine Geschwindigkeit in km/h: ");
            var v1 = Console.ReadLine();
            Console.WriteLine("Seine Geschwindigkeit in km/h: ");
            var v2 = Console.ReadLine();
            Console.WriteLine("Meine Geschwindigkeit betraegt {0} km/h und die Geschwindigkeit des Ueberholenden beträgt {1} km/h!", v1, v2);
            Console.WriteLine("Meine Laenge des Fahrzeugs: ");
            var l1 = Console.ReadLine();
            Console.WriteLine("Laenge des Ueberholenden: ");
            var l2= Console.ReadLine();
            int intv1 = Convert.ToInt32(v1);
            int intv2 = Convert.ToInt32(v2);
            int intl1 = Convert.ToInt32(l1);
            int intl2 = Convert.ToInt32(l2);
            int a = intv1 / 2;
            Console.WriteLine("Der Sicherheitsabstand betraegt {0}m!", a);
            int s = intv1 / (intv1 - intv2) * (intl1 + intl2 + 2 * a);
            Console.WriteLine("Die Wegstrecke für den Ueberholvorgang betraegt: {0}m", s);
            double t1 = s / (intv1 *1000 / 3600);
            Console.WriteLine("Dauer: {0}sec", t1);
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            MyWeg();
            
        }
    }
}

2101668

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.