Софтуерно Инженерство
Loading...
+ Нов въпрос
beholder avatar beholder 2 Точки

Въпрос за задача от предишния изпит по c++

Здравейте, поради наближаването на изпитната дата се хванах да погледна задачите и на втората резултата ми не съвпада къде бъркам?

int main()
{
    string str;
    cin >> str;
    const char * input = str.c_str();
    double x1, y1, z1, x2, y2, z2, x3, y3, z3;
    sscanf_s(input, "%lf,%lf,%lf;%lf,%lf,%lf;%lf,%lf,%lf;", &x1, &y1, &z1, &x2, &y2, &z2, &x3, &y3, &z3); //getting the coordinates
    double cos1 = acos((x1*x2 + y1*y2 + z1*z2) / (sqrt(x1*x1 + y1*y1 + z1*z1)*sqrt(x2*x2 + y2*y2 + z2*z2)));   //from http://stancho.roncho.net/HighMath/AG/DotPr/DotPr.html
    cout << cos1*180/3.14159265; // to convert to degrees
    return 0; 
}
Получава се ъгъл, който не е от изброените в отговора.

Тагове:
0
C++ Programming
stefan.delchev avatar stefan.delchev 49 Точки
Best Answer

Здравей,

Струва ми се, че бъркаш нещо по формулите. Това е моето решение: http://pastebin.com/NGbL08ng

Не е много добре написано, но работи.

1
19/08/2016 20:43:12
beholder avatar beholder 2 Точки

Благодаря ти, явно, че формулата, която съм ползвал от посочения сайт е различна и че имам възможността да видя едно правилно решение. Дано на този изпит не се налага да търсим математически формули из интернет и да гадаем тези ли са, не са ли, както явно е било при вас.

0
dim4o avatar dim4o 288 Точки

В тази формула, която си гледал аргументите не са кооординати на точки - това за проекциите на вектора в трите равнини. Предполагам оттам идва объркването. Според мен ако първо изчислиш страните и после ъглите ще ти е по-лесно. Тази функция sscanf_s изглежда добра находка, защото улеснява изключително парсването на входа.

 

0