#include <iostream>
#include <cmath>
#include <iomanip>
int main() {
// Definisi masukan dan jarak yang diinginkan
const double D_TARGET = 9.6; // Jarak yang diinginkan
double x1 = 3.0;
double y1 = 7.0;
double x2 = 10.0;
// 1. Hitung (x2 - x1)^2
double deltaX_sq = std::pow(x2 - x1, 2); // (10 - 3)^2 = 7^2 = 49
// 2. Hitung D^2 - (x2 - x1)^2
double D_sq = std::pow(D_TARGET, 2); // 9.6^2 = 92.16
double term_in_sqrt = D_sq - deltaX_sq; // 92.16 - 49 = 43.16
// Periksa jika solusi real mungkin (nilai di dalam akar tidak negatif)
if (term_in_sqrt < 0) {
std::cerr << "Kesalahan: Jarak yang diinginkan (" << D_TARGET
<< ") terlalu kecil untuk selisih x yang ada (" << std::sqrt(deltaX_sq)
<< ")." << std::endl;
return 1;
}
// 3. Hitung akar kuadrat dari term_in_sqrt
double sqrt_term = std::sqrt(term_in_sqrt); // sqrt(43.16) ~= 6.57
// 4. Hitung dua kemungkinan nilai y2
// Ada dua titik di sumbu y yang memenuhi jarak 9.6
double y2_option1 = y1 + sqrt_term; // 7 + 6.57...
double y2_option2 = y1 - sqrt_term; // 7 - 6.57...
// --- Verifikasi dan Keluaran ---
// Menampilkan hasil
std::cout << "Titik Pertama (x1, y1): (" << x1 << ", " << y1 << ")" << std::endl;
std::cout << "Titik Kedua x2: " << x2 << std::endl;
std::cout << "Jarak Euclidean yang Diinginkan (D): " << D_TARGET << std::endl;
// Mengatur presisi keluaran
std::cout << std::fixed << std::setprecision(2);
std::cout << "\nJika Jarak = 9.6, maka koordinat y2 adalah salah satu dari:" << std::endl;
std::cout << "y2 Pertama: " << y2_option1 << std::endl;
std::cout << "y2 Kedua: " << y2_option2 << std::endl;
std::cout << "\nSehingga Jarak Terjauh adalah: " << D_TARGET << std::endl;
return 0;
}