2017-04-02 17:01:11 +02:00
# include<iostream>
# include<string>
# include<sstream>
2017-04-05 13:51:21 +02:00
//Dieses Programm berechnet wann sich 2 Autos auf einer Straße treffen wobei die Geschwindigkeit beider Autos schrittweise erhöht werden kann.
2017-04-02 17:01:11 +02:00
int main ( )
{
std : : string input ;
long double speed , distance , speedOppositeTrack , position ;
std : : cout < < " Geben sie die Strecke der Landstra \xE1 \b e in km ein: " ;
2017-04-05 13:51:21 +02:00
do
2017-04-02 17:01:11 +02:00
{
2017-04-05 13:51:21 +02:00
getline ( std : : cin , input ) ;
std : : stringstream ( input ) > > distance ;
if ( distance < 0 ) std : : cout < < " \n ERROR: Die Strecke muss gr \x94 \xE1 \b er als 0 km sein. Gebe die Strecke erneut ein: " ;
} while ( distance < 0 ) ;
2017-04-02 17:01:11 +02:00
std : : cout < < " Geben sie ihre Startgeschwindigkeit in km/h ein: " ;
getline ( std : : cin , input ) ;
std : : stringstream ( input ) > > speed ;
if ( 0 > speed > 200 )
{
std : : cout < < " \n ERROR: Die Geschwindigkeit muss gr \x94 \xE1 \b er als 0 km/h sein und darf 200 km/h nicht \x81 \b berschreiten. " ;
getchar ( ) ;
return ( 1 ) ;
}
std : : cout < < " ...und nun die Geschwindigkeit der Autos der gegen \x81 \b berliegenden Fahrbahn: " ;
getline ( std : : cin , input ) ;
std : : stringstream ( input ) > > speedOppositeTrack ;
if ( 0 > speedOppositeTrack > 200 )
{
std : : cout < < " \n ERROR: Die Geschwindigkeit muss gr \x94 \xE1 \b er als 0 km/h sein und darf 200 km/h nicht \x81 \b berschreiten. " ;
getchar ( ) ;
return ( 1 ) ;
}
2017-04-05 13:51:21 +02:00
std : : cout < < " \n Gib nach jeder Ausgabe +/- ein um deine Geschwindigkeit um 5 km/h zu verringern oder erhöhen \n Sie begegnen unterwegs folgenden Autos: \n " ;
2017-04-02 17:01:11 +02:00
2017-04-05 13:51:21 +02:00
for ( long double time = distance / ( speed + speedOppositeTrack ) , position = time * speed ; position < = distance ; position + = speedOppositeTrack / ( 120 * ( speed + speedOppositeTrack ) ) * speed , time + = speedOppositeTrack / ( 120 * ( speed + speedOppositeTrack ) ) ) //Formel für t nicht ausreichend.
2017-04-02 17:01:11 +02:00
{
if ( position > ULLONG_MAX )
{
std : : cout < < " ERROR: Begegnung kann nicht berechnet werden. " ;
break ;
}
std : : cout < < ( int ) time < < " h: " < < ( int ) ( time * 60 ) % 60 < < " min: " < < ( int ) ( time * 3600 ) % 60 < < " sec: " < < position < < " km " ;
getline ( std : : cin , input ) ;
if ( input = = " + " ) speed + = 5 ;
if ( input = = " - " ) speed - = 5 ;
if ( - speed > speedOppositeTrack ) break ;
}
std : : cout < < " PROGRAMMENDE! " ;
getchar ( ) ;
return ( 0 ) ;
}