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
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.