Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2019, 01:49   #1
Язон_динАльт
Новичок
Джуниор
 
Регистрация: 24.03.2019
Сообщений: 2
Вопрос [Pascal ABC.NET] Тригонометрические функции. Неверно считает

Доброго времени суток!
Шлифую программу из дз, где нужно было по номеру функции в списке (не в массиве, а в рукописном) вычислить её значение при аргументе вводимом с клавиатуры.
Собстно, проблему вызывает не сама программа, а её результаты - значения sin x, cos x и тд, не соответствуют табличным значениям.

Код:
program P5_2;
uses crt;
label ret;
var X, f: real;
var nmr: integer;

begin
textcolor(15);
writeln('Программа вычисляет значения функций:');
writeln('                    1) sin x');
writeln('                    2) cos x');
writeln('                    3) tg x');
writeln('                    4) ctg x');
writeln();
write('Введите значение аргумента: '); readln(X);
ret: write('Введите номер выбранной вами функции: '); readln(nmr);
case nmr of
  1: 
    begin
      f := sin(x); textcolor(4);
    end;
  2: 
    begin
      f := cos(x); textcolor(15);
    end;
  3: 
    begin
      f := sin(x) / cos(x); textcolor(9);
    end;
  4: 
    begin
      f := cos(x) / sin(x); textcolor(12);
    end;
else
  begin
    writeln();
    writeln('Ошибка, введите целое число из диапазона 1..4.');
    goto ret;
  end;
end;
- это фрагмент кода до конца оператора выбора.

Как доказательство можно привести тест программы при аргументе X:=60 и номером функции nmr:=2: [скрин]
Результат налицо, но должно быть cos60 = 1/2 = 0,5...

Вопрос по Чернышевскому - в чём причина и что делать?
Изображения
Тип файла: png 2019-03-24_01-42-27.png (28.7 Кб, 81 просмотров)
Язон_динАльт вне форума Ответить с цитированием
Старый 24.03.2019, 02:00   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Язон_динАльт Посмотреть сообщение
Результат налицо, но должно быть cos60 = 1/2 = 0,5...

Вопрос по Чернышевскому - в чём причина и что делать?
Изображения
Тригонометрические функции "думают", что им передали аргумент в радианах, а не градусах. Если вы вычислите косинус от 60 радиан, то вы и получите столько, сколько вы получаете. А вот косинус от 60 градусов равен 1/2.

Переводите градусы в радианы.
_____

когда считаете (ко)тангенсы, учитывайте, что они существуют не везде.
_____

И не используйте никогда goto.
Вадим Мошев вне форума Ответить с цитированием
Старый 24.03.2019, 02:34   #3
Язон_динАльт
Новичок
Джуниор
 
Регистрация: 24.03.2019
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение

Переводите градусы в радианы.
_____

когда считаете (ко)тангенсы, учитывайте, что они существуют не везде.
_____

И не используйте никогда goto.
1) Принято, спасибо!
2) Учту
3) Я бы рад, но пока циклы "не прошли" самодеятельность пресекают на корню...

Ещё раз, спасибо!
Язон_динАльт вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа неверно считает значения Георгий Панковский Помощь студентам 10 24.11.2017 20:23
[Python] Написанная программа неверно считает. SimON1 Помощь студентам 16 07.09.2017 23:27
Программа неверно считает результат AB96 Общие вопросы Delphi 2 25.11.2015 17:58
алгоритм правильный, а считает неверно jazzzeek Общие вопросы Delphi 11 18.03.2012 15:39
неверно считает? штохл Microsoft Office Excel 3 17.05.2010 22:24