не могли бы вы помочь мне?
Я новичок в программировании и в C ++
#include <iostream>
#include <cmath>
#include <math.h>
#include <cstdio>
using namespace std;
double SSS(double a, double b, double c){
double bot1 = -2*b*c;
double bot2 = -2*c*a;
if(bot1==0.0 or bot2==0.0){
return 0.0;
}double alpha = acos((a*a-b*b-c*c)/bot1);
const double rad = 0.5729577951308232088;double beta = acos((b*b-c*c-a*a)/bot2);
return alpha*rad;
return beta*rad;
}
int main(){
cout << SSS(5, 7, 8)<<endl;
}
Я хотел бы получить угол треугольника в моем окне. Я не знаю, где ошибка .. 🙁
Вам нужно бросить int a, b, c, чтобы плавать.
int SSS(int a, int b, int c){
return (int) acos((float)(a*a-b*b-c*c)/(-2*b*c));
}
2) Используйте математику FP, а не целочисленное деление, рекомендую double
переменные.
3) Избегайте деления на 0.
double SSS(double a, double b, double c) {
double bottom = -2 * b * c;
if (bottom == 0) {
return 0.0;
}
double alpha = acos((a * a - b * b - c * c) / bottom);
//return alpha; // This is in radians
const double r2d = 57.29577951308232088;
return alpha * r2d; // This is degrees
}
ссылка Закон косинусов
Если код должен предоставить и вернуть int
int SSS_int_degrees(int a, int b, int c) {
int bottom = -2 * b * c;
if (bottom == 0) {
return 0;
}
double alpha = acos((1.0 * a * a - 1.0 *b * b - 1.0 *c * c) / bottom);
const double r2d = 57.29577951308232088;
return lround(alpha * r2d); // This is degrees
}