#include <iostream>
#include <cmath> // Diperlukan untuk fungsi sin() dan pow()
#include <iomanip> // Diperlukan untuk mengatur presisi output desimal
// Mendefinisikan konstanta yang akan digunakan
const double GRAVITASI = 9.8; // Percepatan gravitasi dalam m/s^2
const double PI = 3.14159265358979323846;
/**
* @brief Mengonversi sudut dari derajat ke radian.
* @param derajat Sudut dalam satuan derajat.
* @return Sudut dalam satuan radian.
*/
double derajatKeRadian(double derajat) {
return derajat * PI / 180.0;
}
int main() {
// Deklarasi variabel untuk menampung input dari pengguna
double kecepatanAwal, sudutDalamDerajat;
// Mengatur output ke bahasa Indonesia
// std::locale::global(std::locale("id_ID.utf8")); // Baris ini mungkin tidak berfungsi di semua sistem
// Meminta input kecepatan awal dari pengguna
std::cout << "Masukkan kecepatan awal (v0) dalam m/s: ";
std::cin >> kecepatanAwal;
// Meminta input sudut elevasi dari pengguna
std::cout << "Masukkan sudut elevasi (theta) dalam derajat: ";
std::cin >> sudutDalamDerajat;
// Mengonversi sudut yang diinput dari derajat ke radian karena fungsi sin() C++ menggunakan radian
double sudutDalamRadian = derajatKeRadian(sudutDalamDerajat);
// Menghitung ketinggian maksimum (h_max) menggunakan rumus gerak parabola
// Rumus: h_max = (v0^2 * sin^2(theta)) / (2 * g)
double sin_theta = sin(sudutDalamRadian);
double h_max = (pow(kecepatanAwal, 2) * pow(sin_theta, 2)) / (2 * GRAVITASI);
// Menampilkan hasil perhitungan kepada pengguna
std::cout << "\nKetinggian maksimum yang dicapai adalah: "
<< std::fixed << std::setprecision(3) << h_max << " meter." << std::endl;
// Memberikan catatan terkait contoh input dan output yang Anda berikan
std::cout << "\n--- Catatan Penting ---\n"
<< "Untuk input kecepatan 100 m/s dan sudut 37 derajat, hasil perhitungan\n"
<< "berdasarkan rumus fisika yang benar adalah sekitar 184.773 meter.\n"
<< "Output 12.036 yang Anda sebutkan kemungkinan berasal dari rumus atau\n"
<< "nilai input yang berbeda. Program ini dibuat berdasarkan rumus fisika standar.\n";
return 0;
}