Răspuns :
Explicatii :
1. Pentru calcularea bisectoarei folosim formula din imaginea atasata, scrisa intr-o forma in care poate fi inteleasa de computer.
2. Pentru a verifica daca triunghiul este valid verificam daca suma a oricare doua laturi e mai mare decat cea de-a treia latura. In cazul in care conditia nu e indeplinita sa va afisa mesajul "nu exista" iar programul se va incheia (return 0).
3. Pentru a pastra doar primele doua zecimale a unui numar real (float sau double) x :
- Inmultim x cu 100 si salvam rezultatul expresiei intr-o variabila auxiliara.
- Transformam valoarea variabilei auxiliare in numar real (Type Casting - explicit conversion ) si impartim valoarea acesteia la 100.
- Pentru a ne asigura ca la afisarea valorii vor fi afisate exact 2 zecimale folosim cout fixed setprecision(2).
Cod C++ :
#include <iostream>
#include <cmath> // sqrt
#include <iomanip> // setprecision
using namespace std;
int main(){
//Declarare variabile (nr naturale)
double a,b,c;
double ba,bb,bc;
//Citire date
cin >> a >> b >> c;
//Verificare daca triunghiul este valid
if((a > b + c) || (b > a + c) || (c > a + b)){
cout << "Imposibil";
return 0;
}
//Calculare semiperimetru
double p=(a+b+c)/2;
//Calculare lungime bisectoare
ba = sqrt((4*b*c)/((b+c)*(b+c)) * p*(p-a));
bb = sqrt((4*a*c)/((a+c)*(a+c)) * p*(p-b));
bc = sqrt((4*a*b)/((a+b)*(a+b)) * p*(p-c));
//Pastrarea doar primelor 2 zecimale
int aux;
aux=ba*100;
ba=(double)aux/100;
aux=bb*100;
bb=(double)aux/100;
aux=bc*100;
bc=(double)aux/100;
//Afisarea rezultatului
cout << fixed << setprecision(2) << ba << " " << bb << " " << bc;
}
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main() {
float a, b, c;
cin >> a >> b >> c;
if ((a > b + c) || (b > a + c) || (c > a + b)) {
cout << "Imposibil";
return 0;
}
cout << fixed << setprecision(2) << sqrt((4 * b * c) / ((b + c) * (b + c)) * ((a + b + c) / 2) * (((a + b + c) / 2) - b)) << ' ' << sqrt((4 * a * c) / ((a + c) * (a + c)) * ((a + b + c) / 2) * (((a + b + c) / 2) - b)) << ' ' << sqrt((4 * a * b) / ((a + b) * (a + b)) * ((a + b + c) / 2) * (((a + b + c) / 2) - c));
}