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