18 std::cout << c <<
"=?\t";
21 if (std::cin.fail()) {
22 throw std::invalid_argument(c);
26 throw std::domain_error(c);
36 constexpr
auto maxstreamsize = std::numeric_limits<std::streamsize>::max();
46 std::cout <<
"hypotenuse:" << std::hypot(x, y) << std::endl;
47 }
catch (std::invalid_argument &invarg) {
51 std::cin.ignore(maxstreamsize,
'\n');
52 std::cout <<
"invalid argument for:" 53 << invarg.what() << std::endl;
54 }
catch (std::domain_error &domerr) {
58 std::cin.ignore(maxstreamsize,
'\n');
59 std::cout <<
"input parameter must be >0:" 60 << domerr.what() << std::endl;
65 std::cout <<
"new claculation? y[yes] / n[no]" << std::endl;
67 }
while (cmd !=
'y' && cmd !=
'n');
83 throw std::range_error(std::to_string(0));
86 double a = 0.5 * std::pow(v0, 2) / (d - x0);
88 throw std::range_error(std::to_string(a));
100 std::cout <<
"d=" << d <<
" m,";
101 std::cout <<
"v0=" << v0 <<
" m/s,";
102 std::cout <<
"tR=" << rtime <<
" m/s" << std::endl;
103 std::cout << std::setprecision(2);
106 double x0 = v0 * rtime;
107 double x = x0 + 0.5 * std::pow(v0, 2) / a;
108 std::cout <<
"need a=" << a <<
" m/s^2" << std::endl;
109 std::cout <<
"use a=" << std::ceil(a) <<
" m/s^2" << std::endl;
110 std::cout <<
"distance=" << x << std::endl;
111 }
catch (std::range_error err) {
112 std::cout <<
"need : " << err.what() <<
" m/s^2" << std::endl;
113 std::cout <<
"car will crash" << std::endl;
121 const double d = 30.0;
122 const double rtime = 0.7;
123 const double v0 = 14;
126 std::cout <<
"-------------------" << std::endl;
double read_input(const char *c)
read_input lese eine double-Zahl von der Standardeingabe
double brake_assist(double v0, double d, double tR)
brake_assist Berechnung der Beschleunigung damit das Auto noch vor dem Hindernis zum Stehen kommt ...
void break_assist_ui(double v0, double d, double rtime)
break_assist_ui Benutzerschnittstelle
void ex2()
ex2 Auto bremst, um einem Hindernis ausweichen
void ex1()
ex1 Berechnung der Hypotenuse eines rechtwinkligen Dreiecks, Version 3.0 (Benutzerschnittstelle) ...