fork download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <iomanip>
  4. #include <string>
  5. #include <sstream>
  6.  
  7. using namespace std;
  8.  
  9. bool parseDouble(const string& input, double& output) {
  10. istringstream iss(input);
  11. iss >> output;
  12. return !iss.fail() && iss.eof();
  13. }
  14.  
  15. int main() {
  16. const double GRAVITASI = 10.0;
  17. double s, v, t;
  18. int status = 1;
  19.  
  20. string input;
  21.  
  22. cout << "Masukkan sudut peluncuran (0-90 derajat): ";
  23. getline(cin, input);
  24. if (!parseDouble(input, s) || s < 0 || s > 90) {
  25. status = 0;
  26. }
  27.  
  28. if (status == 1) {
  29. cout << "Masukkan kecepatan awal (m/s): ";
  30. getline(cin, input);
  31. if (!parseDouble(input, v)) {
  32. status = 0;
  33. }
  34. }
  35.  
  36. if (status == 1) {
  37. cout << "Masukkan tinggi pohon (m): ";
  38. getline(cin, input);
  39. if (!parseDouble(input, t)) {
  40. status = 0;
  41. }
  42. }
  43.  
  44. if (status == 0) {
  45. cout << fixed << setprecision(2);
  46. cout << "status : 0, ketinggian : 0.00" << endl;
  47. return 0;
  48. }
  49.  
  50. double s_radian = s * (M_PI / 180.0);
  51. double ketinggian = pow(v * sin(s_radian), 2) / (2 * GRAVITASI);
  52.  
  53. cout << fixed << setprecision(2);
  54. cout << "status : 1, ketinggian : " << ketinggian << endl;
  55.  
  56. return 0;
  57. }
  58.  
Success #stdin #stdout 0.01s 5316KB
stdin
37
100
100
stdout
Masukkan sudut peluncuran (0-90 derajat): Masukkan kecepatan awal (m/s): Masukkan tinggi pohon (m): status : 1, ketinggian : 181.09