Пишу инженерный калькулятор и мне нужно, чтобы введенное число переводилось градусы и находился синус или косинус или тангенс этого числа. Не получается это сделать, попытался сделать что-то, но ответ выходит не правильный, радианы переводятся в градусы правильно, а вот уже вычисляю синус градусов и ответ не правильный выходит по сравнению с ответом стандартного калькулятора. Кто нибудь знает в как это сделать? //---------------------------------- Вот пример кода который я писал:
fSqrt = Edit1->Text.ToDouble(); if(RadioGroup1 -> ItemIndex == 0) //перевод числа в радианы, градусы fSqrt = fSqrt * 180 / pi; else if(RadioGroup1 -> ItemIndex == 1) fSqrt; fSqrt = sin(fSqrt); //находит синус числа Edit1->Text = fSqrt; //---------------------------------- Перевод радианов в градусы правильный, ввожу 5 радианов получается 286,48 градусов А вот синус градусов не верный должно выйти "0.08715574274", а в место этого выходит это "-0,55963921546936"
Ну вопрос в том, что нужно сделать, чтобы у меня ответ совпадал с стандартным калькулятором
"должно выйти 0.087"
sin(5)= -0.9589, а не 0.087.
У Вас если ввели в радианах, то переводится в градусы, а если в градусах, то не меняет.
А должно быть наоборот.
Если ввели в радианах то не меняет, а если в градусах, то переводит в радианы.
Развернытый угол в градусах равен 180 градусов, а в радианах он равен пи радиан.
Вам надо
if(RadioGroup1 -> ItemIndex == 1)//если ввели в градусах, то переводим число в радианы
fSqrt *= (pi/180);
fSqrt = sin(fSqrt)
а в если в радианах, то не меняем
PS
"Sqrt" Очень странное название для вводимого аргумента, так как sqrt подразумевает "square root"= квадратный корень.
Чёт с логикой перемудрил. Похоже, можно и нужно упростить ЕСЛИ перевод нужен ТО перевести ВСЁ-ЕСЛИ дальше непонятно, где выбор функции? ЕСЛИ синус ТО вывод синуса ВСЁ-ЕСЛИ ну и дальше
//----------------------------------
Вот пример кода который я писал:
fSqrt = Edit1->Text.ToDouble();
if(RadioGroup1 -> ItemIndex == 0) //перевод числа в радианы, градусы
fSqrt = fSqrt * 180 / pi;
else if(RadioGroup1 -> ItemIndex == 1)
fSqrt;
fSqrt = sin(fSqrt); //находит синус числа
Edit1->Text = fSqrt;
//----------------------------------
Перевод радианов в градусы правильный, ввожу 5 радианов получается 286,48 градусов
А вот синус градусов не верный должно выйти "0.08715574274", а в место этого выходит это "-0,55963921546936"