PHP :: Aufgabe #269 :: Lösung #1
1 Lösung

#269
Überholen: benötigte Strecke und Dauer berechnen
Anfänger - PHP
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 Exception (7090 Punkte)
- 11.05.2020 um 19:25 Uhr
main.php
PHP-Code

<?php array_shift($argv); // remove script name if (sizeof($argv) !== 4) { die('Error: 4 arguments expected, ' . sizeof($argv) . ' provided.' . PHP_EOL); } $length0 = floatval($argv[0]); $length1 = floatval($argv[1]); $velocity0 = floatval($argv[2]); $velocity1 = floatval($argv[3]); if ($velocity0 === $velocity1) { die('Error: Both cars have the same speed.' . PHP_EOL); } elseif ($velocity0 < $velocity1) { die('Error: Second car is faster.' . PHP_EOL); } $saftyDistance = $velocity0 / 2; $result = $velocity0 / ($velocity0 - $velocity1) * ($length0 + $length1 + 2 * $saftyDistance); var_dump($result);
Konsolenausgabe:
php main.php 10.0 10.0 100.0 101.0
Error: Second car is faster.
php main.php 10.0 10.0 100.0 10.0
float(133.33333333333)
php main.php 10.0 10.0 100.0 100.0
Error: Both cars have the same speed.
php main.php 10.0 10.0 101.0 100.0
float(12221)
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1