Как рассчитать с помощью си программы значения тригонометрических функций угла 125

Никак не получается вычеслить значение тригонометрических функций,а точнее разбить строку так, чтобы это зделать.Нужно использовать только C.Я думал разбить строку на значение и текст ,тоисть :получить два масив из одного был

ch[]=»cos30+sin45-tg(44-22)»;
num[] code-snippet»>cos+sin+tn

а потом подставлять но не получается потом это сделать.Может нада использовать другую идею или подскажите как реализовать эту.

#include #include #include #include #include #define PI 3.14159265 int f(char* ch, int n) < int num=0, i; for(i=0; ireturn num; > void main () < char ch[]=»cos30+sin45-tg(44-22)»; char *ptr; int b; char key_num[] = «0123456789»; int arr[100],c=0; char num[50]; ptr = strpbrk (ch, key_num); while (ptr != NULL) < printf («%c %d » , *ptr, ptr-string); num[ c ]=ch[ptr-ch]; ptr = strpbrk (ptr+1,key_num); c++; >getch(); >

Код к задаче: «Вычисление тригонометрических функций»

Листинг программы

//маленький парсер, считываем справа налево========================================= //операции +/- ================================================================ //числа — int ================================================================ #include #include #include struct ARG < int value; char operation; struct ARG *next; >; struct ARG *start; struct ARG *last; //———————————————————————————— //Односвязный список в режиме «write|append» ) //———————————————————————————— void insert ( struct ARG *i, /* новый элемент */ struct ARG **start, /* начало списка */ struct ARG **last) /* конец списка */ < if(!*last) /* первый элемент в списке */ < i->next = NULL; *last = i; *start = i; return; > (*last)->next = i; /* вставка в конец */ i->next = NULL; *last = i; > //———————————————————————————— //Готовим строку к работе — убираем все пробелы и добавляем впереди +, если необходимо //———————————————————————————— char *trimForWork(char *s) < char *res = (char*) malloc (strlen(s)+2); char *resPlus = (char*) malloc (strlen(s)+2); int i=0,k=0; for(; ireturn res; > //———————————————————————————— //считываем число справа — до следующего +/- //———————————————————————————— int getArg(char *s) < int i = strlen(s)-1,len = 0, k; for(; i//———————————————————————————— //укорачиваем строку на считанное число справа //———————————————————————————— char *cutStr(char *s) < int i = strlen(s)-1,len = 0; for(; i//———————————————————————————— //считываем операцию — последний символ текущей строки //———————————————————————————— char getOp(char *s) < return s[strlen(s)-1]; >//———————————————————————————— //укорачиваем строку на 1 символ — считанную операцию — справа //———————————————————————————— char *cutOne(char *s) < if(!strlen(s)) return s; s[strlen(s)-1]=’’; return s; >//———————————————————————————— //———————————————————————————MAIN //———————————————————————————— int main() < int res = 0; char *expression = » 10 — 5 + 4 — 1 + 18″; struct ARG *argument, *rewind; start = last = NULL; expression = trimForWork(expression); //подготовка строки к работе puts(expression); //готовая строка while(strlen(expression)) < argument = (struct ARG *)malloc(sizeof(struct ARG)); argument->value = getArg(expression); //считываем число expression = cutStr(expression); //укорачиваем на число справа argument->operation = getOp(expression); //считываем операцию expression = cutOne(expression); //укорачиваем на 1 символ с конца insert(argument,last); //заносим текущий аргумент в список > rewind = start; //прокручиваем список, подсчитываем результат while(rewind) < if(rewind->operation == ‘+’) res += rewind->value; else res -= rewind->value; rewind = rewind->next; > printf(«nResult: %d»,res); getchar(); return 0; >

Источник: studassistent.ru

Читайте также:
Программа ps4 temperature отзывы

Синус, косинус, тангенс, котангенс за 5 МИНУТ

Таблица значений тригонометрических функций — как её запомнить!!!

Тригонометрические функции в C++ Builder

Запись была обновлена

При работе с тригонометрическими функциями в C++Builder необходимо подключать соответствующий заголовочный файл (библиотеку) – math.h и Math.hpp. Во всех тригонометрических функциях угол задаётся в радианах.

#include #include

DegToRad – преобразование из угла в радиану

Тригонометрическая функция DegToRad принимает значение угла типа double и переводит его в радиану.
double Rad = DegToRad((double)90); // => 1,5707963267949

CycleToRad – преобразование из цикла в радиану

Тригонометрическая функция CycleToRad принимает значение цикла типа double и переводит его в радиану.

double Rad = CycleToRad(0.25); //четверть периода // => 1,5707963267949

Вычисление синус и косинус угла

Чтобы вычислить синус или косинус угла, сначала необходимо перевести число в радианы.
double Sin = sin(DegToRad((double)45)); // => 0,707106781186548 double Cos = cos(DegToRad((double)45)); // => 0,707106781186548

Обратные тригонометрические функции

  • acos и acosl в диапазоне [0, p];
  • asin, asinl, atan, atan2, atan2l и atanl в диапазоне [~π/2, π/2].

Как и другие тригонометрические функции значения возвращаются в радианах. Чтобы получить значение угла в градусах или в доле периода необходимо применить функции преобразования RadToDeg и RadToCycle.

double angle = atan(90); //В радианах => 1,55968567289729 double angle = RadToDeg(atan(90)); //В градусах => 89,3634064240365 double angle = RadToCycle(atan(90)); //В долях периода => 0,248231684511213

Если заданный аргумент в функциях acos, acosl, asin и asinl не входит в диапазон значений [-1, +1], то генерируется ошибка, которая оповещает о выходе значения за пределы области определения (EDOM).

Если заданный аргумент в гиперболических функциях tosh, coshl, sinh и sinhl будет слишком большой, то генерируется ошибка, которая оповещает о выходе значения за диапазон допустимых значений (ERANGE).

Таблица тригонометрических функций

Функция Синтаксис Описание Заголовочный файл
acos double acos(double x) Вычисляет арккосинус угла math.h
acosl long double acosl(long double x) Вычисляет арккосинус угла math.h
ArcCos Extended ArcCos(Extended X) Вычисляет арккосинус угла Math.hpp
ArcCosh Extended ArcCosh(Extended X) Вычисляет гиперболический арккосинус угла Math.hpp
ArcSin Extended ArcSin(Extended X) Вычисляет арксинус угла Math.hpp
ArcSinh Extended ArcSinh(Extended X) Вычисляет гиперболический арксинус угла Math.h
ArcTan2 Extended ArcTan2(Extended Y, Extended X) Вычисляет арктангенс (Y/X) угла Math.hpp
ArcTanh Extended ArcTanh(Extended X) Вычисляет гиперболический арктангенс угла Math.hpp
asin double asin(double x) Вычисляет арксинус угла math.h
asinl long double asinl(long double x) Вычисляет арксинус угла math.h
atan double atan(double x) Вычисляет арктангенс угла math.h
atan2 double atan2(double y, double x) Вычисляет арктангенс (у/x) угла math.h
atan2l long double atan2l(long double y, long double x) Вычисляет арктангенс (у/x) угла math.h
cos double cos(double x) Вычисляет косинус угла math.h
cosh double cosh(double x) Вычисляет гиперболический косинус угла math.h
Cosh Extended Cosh(Extended X) Вычисляет гиперболический косинус угла Math.hpp
coshl long double coshl(long double x) Вычисляет гиперболический косинус угла math.h
cosl long double cosl(long double x) Вычисляет косинус угла math.h
Cotan Extended Cotan(Extended X) Вычисляет котангенс угла Math.hpp
CycleToRad Extended CycleToRad(Extended Cycles) Вычисляет угол в радианах по значению в диапазоне Cycles: 2π*Cycles Math.hpp
DegToRad Extended DegToRad(Extended Degrees) Вычисляет угол в радианах по значению в диапазоне Degrees: Degrees*π/180 Math.hpp
hypot double hypot(double x, double y) Вычисляет гипотенузу треугольника с катетами x и у math.h
Hypot Extended Hypot(Extended X, Extended Y) Вычисляет гипотенузу по катетам X и Y Math.hpp
hypotl long double hypotl(long double x, long double y) Вычисляет гипотенузу треугольника с катетами x и у math.h
RadToCycle Extended RadToCycle(Extended Radians) Вычисляет угол в периодах по значению в диапазоне Radians: Radians/(2π) Math.hpp
RadToDeg Extended RadToDcg(Extended Radians) Вычисляет угол в градусах по значению в диапазоне Radians: Radians*180/π Math.hpp
sin double sin(double x) Вычисляет синус угла math.h
SinCos void SinCos(Extended Theta, Extended Cos) Вычисляет синус Sin и косинус Cos угла Theta Math.hpp
Sinh Extended Sinh(Extended X) Вычисляет гиперболический синус угла Math.hpp
sinh double sinh(double x) Вычисляет гиперболический синус угла math.h
sinhl long double sinhl(long double x) Вычисляет гиперболический синус угла math.h
sinl long double sinl(long double x) Вычисляет синус угла math.h
Tan Extended Tan(Extended X) Вычисляет тангенс угла Math.hpp
tan double tan(double x) Вычисляет тангенс угла math.h
Tanh Extended Tanh(Extended X) Вычисляет гиперболический тангенс угла Math.hpp
tanh double tanh(double x) Вычисляет гиперболический тангенс угла math.h
tanhl long double tanhl(long double x) Вычисляет гиперболический тангенс угла math.h
tanl long double tanl(long double x) Вычисляет тангенс угла math.h
Читайте также:
Как пользоваться программой pc inspector file recovery

Источник: cubook.pro

Вычисление тригонометрических функций в Python (sin, cos, tan, arcsin, arccos, arctan)

From-Locals

Используя math, стандартный модуль Python для математических функций, вы можете вычислять тригонометрические функции (sin, cos, tan) и обратные тригонометрические функции (arcsin, arccos, arctan).

  • Pi (3.1415926…) : math.pi
  • Преобразование углов (радианы, градусы) : math.degrees() , math.radians()
  • Синус, обратный синус : math.sin() , math.asin()
  • косинус, обратный косинус : math.cos() , math.acos()
  • Тангенс, обратный тангенс : math.tan() , math.atan() , math.atan2()
  • Различия ниже : math.atan() , math.atan2()

Table of Contents

  • Pi (3.1415926…): math.pi
  • Преобразование углов (радианы, градусы): math.degrees(), math.radians()
  • Синус, обратный синус: math.sin(), math.asin()
  • косинус, обратный косинус: math.cos(), math.acos()
  • Тангенс, обратный тангенс: math.tan(), math.atan(), math.atan2()
  • Разница между math.atan() и math.atan2()

Pi (3.1415926…): math.pi

Pi предоставляется в качестве константы в математическом модуле. Она выражается следующим образом.
math.pi

import math print(math.pi) # 3.141592653589793

Преобразование углов (радианы, градусы): math.degrees(), math.radians()

Тригонометрические и обратные тригонометрические функции в математическом модуле используют радиан в качестве единицы измерения угла.

Используйте math.degrees() и math.radians() для преобразования между радианами (метод градуса дуги) и градусами (метод градуса).

Math.degrees() преобразует радианы в градусы, а math.radians() преобразует градусы в радианы.

print(math.degrees(math.pi)) # 180.0 print(math.radians(180)) # 3.141592653589793

Синус, обратный синус: math.sin(), math.asin()

Функция для нахождения синуса (sin) — math.sin(), а функция для нахождения обратного синуса (arcsin) — math.asin().

Вот пример нахождения синуса 30 градусов с использованием функции math.radians() для преобразования градусов в радианы.

sin30 = math.sin(math.radians(30)) print(sin30) # 0.49999999999999994

Синус 30 градусов равен 0,5, но здесь есть ошибка, потому что пи, иррациональное число, не может быть вычислено точно.

Если вы хотите округлить до соответствующего количества цифр, используйте функцию round() или метод format() или функцию format().

Обратите внимание, что возвращаемое значение round() — это число (int или float), а возвращаемое значение format() — это строка. Если вы хотите использовать его для последующих вычислений, используйте round().

print(round(sin30, 3)) print(type(round(sin30, 3))) # 0.5 # print(‘ ‘.format(sin30)) print(type(‘ ‘.

format(sin30))) # 0.5 # print(format(sin30, ‘.3’)) print(type(format(sin30, ‘.3’))) # 0.5 #

Функция round() указывает количество десятичных знаков в качестве второго аргумента. Обратите внимание, что это не совсем округление. Подробнее см. в следующей статье.

  • СООТВЕТСТВУЮЩИЕ:Округление десятичных и целых чисел в Python : round() , Decimal.quantize()
Читайте также:
Загрузка операционной системы это запуск специальной программы содержащей математические операции

Метод format() и функция format() задают количество десятичных знаков в строке спецификации форматирования. Подробнее см. в следующей статье.

  • СООТВЕТСТВУЮЩИЕ:Преобразование формата в Python, формат (0-заполнение, экспоненциальная нотация, шестнадцатеричная и т.д.)

Если вы хотите сравнить, вы также можете использовать math.isclose().

print(math.isclose(sin30, 0.5)) # True

Аналогично, вот пример нахождения обратного синуса 0,5. math.asin() возвращает радианы, которые преобразуются в градусы с помощью math.degrees().

asin05 = math.degrees(math.asin(0.5)) print(asin05) # 29.999999999999996 print(round(asin05, 3)) # 30.0

косинус, обратный косинус: math.cos(), math.acos()

Функция для нахождения косинуса (cos) — math.cos(), а функция для нахождения обратного косинуса (arc cosine, arccos) — math.acos().

Вот пример нахождения косинуса 60 градусов и обратного косинуса 0,5.

print(math.cos(math.radians(60))) # 0.5000000000000001 print(math.degrees(math.acos(0.5))) # 59.99999999999999

Если вы хотите округлить до соответствующего разряда, вы можете использовать round() или format(), как в случае с синусом.

Тангенс, обратный тангенс: math.tan(), math.atan(), math.atan2()

Функция для нахождения тангенса (tan) — math.tan(), а функция для нахождения обратного тангенса (arctan) — math.atan() или math.atan2().
Math.atan2() будет описана позже.

Пример нахождения тангенса 45 градусов и обратного тангенса 1 градуса показан ниже.

print(math.tan(math.radians(45))) # 0.9999999999999999 print(math.degrees(math.atan(1))) # 45.0

Разница между math.atan() и math.atan2()

И math.atan(), и math.atan2() — это функции, возвращающие обратный тангенс, но они отличаются количеством аргументов и диапазоном возвращаемых значений.

math.atan(x) имеет один аргумент и возвращает arctan(x) в радианах. Возвращаемое значение будет находиться между -pi 2 и pi 2 (от -90 до 90 градусов).

print(math.degrees(math.atan(0))) # 0.0 print(math.degrees(math.atan(1))) # 45.0 print(math.

degrees(math.atan(-1))) # -45.0 print(math.degrees(math.atan(math.inf))) # 90.0 print(math.

degrees(math.atan(-math.inf))) # -90.0

В приведенном выше примере math.inf представляет бесконечность.

math.atan2(y, x) имеет два аргумента и возвращает arctan(y x) в радианах. Этот угол — угол (склонение), который вектор от начала координат (x, y) составляет с положительным направлением оси x в полярной координатной плоскости, а возвращаемое значение находится в диапазоне от -pi до pi (от -180 до 180 градусов).

Поскольку углы во втором и третьем квадрантах также могут быть получены правильно, math.atan2() более подходит, чем math.atan() при рассмотрении полярной координатной плоскости.

Обратите внимание, что порядок аргументов — y, x, а не x, y.

print(math.degrees(math.atan2(0, 1))) # 0.0 print(math.degrees(math.atan2(1, 1))) # 45.0 print(math.

degrees(math.atan2(1, 0))) # 90.0 print(math.degrees(math.atan2(1, -1))) # 135.0 print(math.degrees(math.

atan2(0, -1))) # 180.0 print(math.degrees(math.atan2(-1, -1))) # -135.0 print(math.degrees(math.

atan2(-1, 0))) # -90.0 print(math.degrees(math.atan2(-1, 1))) # -45.0

Как и в приведенном выше примере, отрицательное направление оси x (y равен нулю и x отрицателен) равно pi (180 градусов), но когда y равен отрицательному нулю, это -pi (-180 градусов). Будьте осторожны, если вы хотите строго обращаться со знаком.

print(math.degrees(math.atan2(-0.0, -1))) # -180.0

Отрицательные нули являются результатом следующих операций

print(-1 / math.inf) # -0.0 print(-1.0 * 0.0) # -0.0

Целые числа не рассматриваются как отрицательные нули.

print(-0.0) # -0.0 print(-0) # 0

Даже если x и y равны нулю, результат зависит от знака.

print(math.degrees(math.atan2(0.0, 0.0))) # 0.0 print(math.degrees(math.atan2(-0.0, 0.0))) # -0.0 print(math.

degrees(math.atan2(-0.0, -0.0))) # -180.0 print(math.degrees(math.atan2(0.0, -0.0))) # 180.0

Есть и другие примеры, где знак результата меняется в зависимости от отрицательных нулей, например, math.atan2(), а также math.sin(), math.asin(), math.tan() и math.atan().

print(math.sin(0.0)) # 0.0 print(math.sin(-0.0)) # -0.0 print(math.asin(0.0)) # 0.0 print(math.

asin(-0.0)) # -0.0 print(math.tan(0.0)) # 0.0 print(math.tan(-0.0)) # -0.0 print(math.

atan(0.0)) # 0.0 print(math.atan(-0.0)) # -0.0 print(math.atan2(0.0, 1.0)) # 0.0 print(math.atan2(-0.0, 1.0)) # -0.0

Обратите внимание, что приведенные примеры — это результаты выполнения программы в CPython. Обратите внимание, что другие реализации или среды могут по-другому обрабатывать отрицательные нули.

Источник: ru.from-locals.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru