#lua
#lua
Вопрос:
Мы поставили задачу как
Считайте угол в градусах и выводите значения этого угла tan, cosec, sec и cot в том же порядке. Для использования с помощью функции rad() преобразуйте угол из градусов в радианы для стандартных библиотечных функций.
Для которого мы написали код как
x = io.read()
radianVal = math.rad (x)
io.write(string.format("%.1f ", math.tan(radianVal)),"n")
io.write(string.format("%.1f ", math.cosh(radianVal)),"n")
io.write(string.format("%.1f ", math.sinh(radianVal)),"n")
io.write(string.format("%.1f ", math.cos(radianVal)),"n")
Но результат не такой, как ожидалось, не уверен, где мы ошиблись
Run as Custom Input
30
Your Output (stdout)
0.6
1.1
0.5
0.9
Expected Output
0.57735026918963
2.0
1.1547005383793
1.7320508075689
Правильный код, который работает идеально, это
x = io.read()
function cot(radAngle)
return 1 / math.tan(radAngle)
end
function cosec(radAngle)
return 1 / math.sin(radAngle)
end
function sec(radAngle)
return 1 / math.cos(radAngle)
end
local radAngle = math.rad(x)
print(math.tan(radAngle))
print(cosec(math.rad(x)))
print(sec(math.rad(x)))
print(cot(math.rad(x)))
Ответ №1:
Как вы можете ожидать получения правильного результата, если вы вычисляете cosh(x)
вместо csc(x)
? Вы используете гиперболический косинус для вычисления косеканта. Я думаю, очевидно, почему ваши результаты не приняты.
Вы используете sinh(x)
для вычисления sec(x)
и cos(x)
для вычисления cot(x)
.
Вы путаете математические функции. Это не проблема программирования на Lua.
Я предлагаю вам потратить несколько часов на изучение тригонометрических функций.
https://en.wikipedia.org/wiki/Trigonometric_functions
Такие значения вычисляются с использованием правильной формулы или функции. Не при использовании какой-либо функции математической библиотеки с похожим именем.
cosh устарел, начиная с Lua 5.3, кстати.
Вы можете использовать math.tan для вычисления касательных вашего угла.
Для секущих, косекантных и котангенс вам придется реализовать свои собственные функции.
Также обратите внимание, что количество десятичных знаков может вызвать проблему при проверке результата. Убедитесь, что можно округлить до 1 после запятой.
Пример:
Нет функции для вычисления котангенса угла. Итак, мы определяем один.
function cot(radAngle)
return 1 / math.tan(radAngle)
end
local radAngle = math.rad(30)
print("tan(30°):", math.tan(radAngle))
print("cot(30°):", cot(math.rad(30)))
->
tan(30°): 0.57735026918963
cot(30°): 1.7320508075689
Комментарии:
1. Теперь мы используем x = io.read() radianVal = math.rad (x) io.write(string.format(«%.1f «, math.tan(radianVal)), «n») io.write(string.format(«%.1f «, math.csc(radianVal)), «n») io.write(string.format(«%.1f «, math.sec(radianVal)), «n») io.write(string.format(«% .1f «, math.cot(radianVal)), » n») выдает ошибку как lua5.3: Решение.lua:11: попытка вызвать нулевое значение (поле ‘cot’) трассировка стека: Решение.lua: 11: в основном блоке [C]: в ?
2. Я говорил вам, что вы должны реализовать эти функции самостоятельно. нет math.cot., нет math.sec и нет math.csc. следовательно, вы не можете вызвать эти функции. пожалуйста, прочитайте мой ответ, а не только его части. также обратитесь к руководству по Lua, прежде чем пытаться использовать какие-либо функции. здесь вы узнаете, существуют ли эти функции и как их правильно использовать. вы можете вычислить все эти значения из существующих функций.
3. спасибо, понял, но не могли бы вы пояснить это, прочитайте угол в градусах и, чтобы использовать функцию rad (), преобразуйте угол из градусов в радианы для стандартных библиотечных функций. Также для tan, который мы получаем как 0.6, он должен быть 0.57735026918963, как его получить
4. смотрите редактирование. ваш 0.6 вызван округлением 0.577… до 1 цифры. Пожалуйста, ознакомьтесь с некоторыми математическими основами, прежде чем начать программировать.
5. спасибо, проблема решена после комментариев ur и повторного использования математической функции