ТОП 10:

Стандартные математические функции



Декларации математических функций языка С содержатся в файле math.h. В последующих записях аргументы x и y имеют тип double, кроме abs(), параметр n имеет тип int. Аргументы тригонометрических функций задаются в радианах (2p радиан = 360О). Все приведенные математические функции возвращают значение (результат) типа double.

 

Таблица 3

Математическая функция Имя функции в языке С Математическая функция Имя функции в языке С
sqrt(x) arcsin(x) asin(x)
|x| fabs(x) arctg(x) atan(x)
ex exp(x) arctg(x/y) atan2(x,y)
xy pow(x,y) sh(x)=1/2 (ex-e-x) sinh(x)
ln(x) log(x) ch(x)=1/2 (ex+e-x) cosh(x)
lg10(x) log10(x) tgh(x) tanh(x)
sin(x) sin(x) Остаток от деления x на y fmod(x,y)
cos(x) cos(x) Наименьшее целое ³ x ceil(x)
tg(x) tan(x) Наибольшее целое £ x floor(x)

Операция присваивания

Операция присваивания имеет две формы записи:

1. Полная форма:

имя_переменной =выражение;

Сначала вычисляется выражение, а затем результат присваивается имени_переменной.

Например: y=(x+2)/(3*x)-5;

С помощью одного оператора можно присвоить одно значение несколь­ким перемен­ным, например: x=y=z=0; /* x, y, z=0 */

или z=(x=y)*5; - сначала переменной x присваивается значение переменной y, далее вычисляется выражение x*5 , и результат присваивается переменной z.

2. Сокращенная форма:

имя_переменной операция=выражениe;

где операция – одна из арифметических операций (+ , -, *, /, %);

Например:x*=5; // x=x*5;

s+=7; // s=s+7;

y/=x+3; // y=y/(x+3);

Сокращенная форма операции присваивания применяется тогда, когда переменная используется в обеих частях полной формы данного оператора.

В языке С существуют операции уменьшения (--) и увеличения (++) значения переменной на 1. Операции могут быть префиксные (++i и --i) и постфиксные (i++ и i--). При использовании данной операции в выражении в случае префиксной операции сначала выполняется сама операция (изменяется значение i), и только потом вычисляется выражение. В случае постфиксной операции – операция применяется после вычисления выражения.

Например: b=7;

n=1;

1. c=b*++n; // n=n+1; c=b*n; т.е. c=14

2. c=b*n++; // c=b*n; n=n+1; т.е. c=7

 

Операторы перехода

Оператор безусловного перехода

goto < метка>;

Управление передается оператору с данной меткой:

<метка>: оператор;

В языке С метка не декларируется.

Оператор условного перехода if применяется для выбора одной из ветвей вычислений.

Общая форма записи:

if ( условие ) оператор_1;

else оператор_2;

Например: if(x>y) max=x;

else max=y;

Если оператор_1 или оператор_2 содержит два и более операторов, то они заключаются в фигурные скобки { }, т.е. применяется составной оператор. Оператор if проверяет истинность или ложность условия. Если условие истинно (не равно 0), то выполняется оператор_1, иначе, при ложности условия (=0), выполняется оператор_2.

Вторая часть оператора (else оператор_2;) может отсутствовать, такую форму называют “сокращенной”. Тогда в случае ложности условия управление передается на следующий за if оператор.

Если оператор_1 и оператор_2 в свою очередь являются операторами if, то такой оператор называют вложенным. При этом ключевое слово else принадлежит ближайшему предшествующему if.

Общий вид вложенного оператора if:

if (условие_1) оператор_1;

else if(условие_2) оператор_2;

else оператор_3;

Например: найти наибольшее значение из трех чисел x,y,z.

if (x>y)

if (x>z) max=x;

else max=z;

else if(y>z) max=y;

else max=z;

В качестве условий в языке С используют следующие операции отношений:

< (меньше), <= (меньше или равно), > (больше), >= (больше или равно), != (не равно), = = (равно). Пары символов разделять нельзя.

Общий вид условия:

<выражение_1> <знак_операции> <выражение_2>

Операндами могут быть любые простые типы. Значения операндов после вычисления перед сравнением преобразуются к одному типу. В качестве условий используются и более сложные выражения, содержащие логические операции. Приведем их перечень в порядке убывания приоритета: ! (отрицание или логическое НЕТ), &&(конъюнкция или логическое И), || (дизъюнкция или логическое ИЛИ). Пары символов &&и ||разделять нельзя.

Например: (0<x)&&(x<=100)

((!x)&&(y>0)||((z==1)&&(k>0))

Выражения вычисляются слева направо, причем их вычисление прекращается, как только результат становится известен.

Триадный оператор(оператор условного перехода ?). Его форма:

имя_переменной =условие ? выражение_1 : выражение_2;

Если условие истинно, то имени_переменной присваивается результат выражения_1, иначе – выражения_2.

Например: найти наибольшее из двух чисел: max=a>b ? a : b;

Оператор выбора switch

Общая форма оператора выбора:

switch(выражение)

{

caseconst_1: операторы; break;

caseconst_N: операторы;break;

default:операторы;

}

где const_1…const_N - целые или символьные константы; default - выполняется, если результат выражения не совпал ни с одной константой; может отсутствовать; break - оператор завершения работы switch. После выполнения одной из ветвей case все остальные ветви будут опущены. Если оператор break не записан, то выполняются операторы следующей ветви case. Оператор switch проверяет, совпадает ли значение выражения с одним из значений, приведенных ниже констант. При совпадении выполняются операторы, стоящие после совпавшей константы.

Например:

switсh(i)

{

case 1: f=pow(x,2);

break;

case 2: f=fabs(x);

break;

case 3: f=sqrt(x);

break;

default: printf(“Ошибка!”);

exit(1);

}

f=f+5;

 

Пример линейного алгоритма

Вычислить ,

при x=2,444, y=0,00869, z=-130, должно быть получено: -0.49871.

Текст программы может иметь следующий вид:

#include <stdio.h>

#include <conio.h>

#include <math.h>

#define x 2.444

#define y 0.00869

#define z -130.0

 

void main(void)

{

double rezult,dop,a,b,c;

clrscr( ); // Очистка экрана

puts(" Линейная программа ");

dop=fabs(y-x);

a=pow(x,y+1)+exp(y-1);

b=1+x*fabs(y-tan(z));

c=0.5*pow(dop,2)-pow(dop,3)/3;

rezult=a/b*(1+dop)+c;

printf("\a\n Ответ: rezult=%lf, Press any key...", rezult);

getch( ); // Задержка до нажатия любой клавиши

}

 

Пример использования оператора if

Вычислить значение функции F. Предусмотреть вывод сообщения о том, по какой ветви происходило вычисление.

Текст программы может иметь следующий вид:

#include <conio.h>

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

#define A 1

#define C 3

 

double max(double m,double n) // Функция max с параметрами m и n для

{ // нахождения максимального значения

if (m>n) return m;

else return n;

}

 

double min(double m, double n) // Функция min с параметрами m и n для

{ // нахождения минимального значения

if (m<n) return m;

else return n;

}

 

void main()

{

double x,y,f; // Декларирование переменных x,y,f

clrscr();

puts("Введите значения x и y");

scanf("%lf %lf",&x,&y); // Ввод значений x и y

if ((x>0)&&(y<0))

{

f=(A*x+tan(C*y))/(5-2*x);

puts("F=(а*x+tg(c*y))/(5-2*x)");

}

else if ((x<0)&&(y>0))

{

f=max(pow(x,2.0/3.0),cos(y*y)); // Вызов функции max puts("F=max(pow(x,2/3),cos(y*y))");

}

else if ((x>0)&&(y>0))

{

f=min(0.5*x-2*pow(sin(y),2),exp(y)); // Вызов функции min puts("F=min(0.5*x-2*pow(sin(y),2),exp(y))");

}

else

{

puts("Функция F не определена \n Press any key...");

getch();

exit(1); // Принудительное завершение программы

}

printf("ОТВЕТ: F=%lf,\n Press any key...\n",f);

getch();

}

 

Работа интегрированной среды программирования Borland C++, в которой происходит выполнение программы, а также порядок набора текста, компиляции, редактирования, отладки и выполнения программы приведены в Приложении.

Варианты индивидуальных заданий

 

Составить программу для определения значения функции. Предусмотреть вывод сообщения о том, по какой ветви происходило вычисление значения аргумента функции х.

1. , где

2. где

3. где

4. где

5. где

6. где

7. где

8. где

9. где

10. где

11. где

12. , где

13. , где

14. , где

15. , где

16.

17.

18.

19.

20.

 

Контрольные вопросы

 

1.Какие типы переменных применяются в языке С?

2.Перечислите основные отличия функций printf() и scanf().

3.Какие формы записи операторов if применяются в языке С?

4.Чем отличается оператор if от оператора switch?

 

 


ЛАБОРАТОРНАЯ РАБОТА № 2

 







Последнее изменение этой страницы: 2016-04-08; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 34.236.245.255 (0.02 с.)