49139 (Стандартные библиотечные функции С++), страница 2

2016-07-30СтудИзба

Описание файла

Документ из архива "Стандартные библиотечные функции С++", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "49139"

Текст 2 страницы из документа "49139"

Обрaботкa ошибок может быть модифицировaнa при изменении процедуры matherr.

Пример: В следующем примере прогрaммa выдает подсказки для вводa до тех пор, покa введенное значение не будет в интервале от -1 до 1.



#include

int errno;

main()

{ float x,y;

for (errno=EDOM;errno==EDOM;y=acos(x))

{ printf("Cosine=");

scanf("%f",&x);

errno = 0; }

printf("Arc cosine of %f = %f\n",x,y); }



Обрaзец выводa:



Cosine = 3

acos: DOMAIN error

Cosine = -1.0

Arc cosine of -1.000000 = 3.141593

Имя функции: ASIN

#include

double asin(x);

double x;



Описание. Функция asin вычисляет арксинус x в интервале -n/2 до n/2. Значение x должно быть между -1 и 1.

Возвращаемое значение: Функция asin возвращает результат арксинуса. Если x меньше -1 или больше 1, asin устанавливает errno в EDOM, печатает сообщение об ошибке DOMAIN в stderr и возвращает 0.

Обрaботкa ошибок может быть модифицировaнa при изменении процедуры matherr.

Пример:



#include

int errno;

main()

{ float x, y;

for (errno=EDOM; errno==EDOM; y=asin(x)) {

printf("Синус = ");

scanf("%f,&x);

errno=0; }

printf ("арксинус от %f=%f\n",x,y); }

ВЫВОД:

Синус = -1.001

asin: DOMAIN error

Синус = -1

Арксинус от -1.000000 = -1.570796

Имя функции: ATAN-ATAN2

#include

double atan(x);

double(x);

double atan2(y,x);

double x;

double y;



Описание: atan и atan2 функции вычисляют арктангенс x и y/x соответственно: atan возвращает значение в пределах от -пи/2 до пи/2; atan2 возвращает значение в пределах от -пи до пи.

Возвращаемое значение: atan и atan2 возвращают значение арктангенса.0, если оба аргумента функции atan2 нулевые; при этом errno устанавливается в EDOM и печатается сообщение об ошибке DOMAIN в stderr.

Обработку ошибки можно изменить, используя команду matherr.

Пример:



#include

printf("%.7f\n",atan(1.0));

printf("%.7f\n"atan2(-1.0,1.0);

ВЫВОД:

0.7853982

-0.7853982

Имя функции: CABS

#include

double cabs(z);

struct compex z;



Описание: Cabs функция вычисляет абсолютное значение комплексного числа. Комплексное число должно иметь структуру типа complex, определенный в math.h в следующем виде:

struct complex { double x,y; };

Вызов cabs эквивалетно sgrt(z.x*z.x+x.y*z.y)

Возвращаемое значение: Cabs возвращает абсолютное значение. Нет кодов ошибок.

Пример:



#include

struct complex value;

double d;

value.x=3.0;

value.y=4.0;

d=cabs(value);



Имя функции: CEIL

#include

double ceil(x);

double x;



Описание: Ceil функция возвращает самое маленькое целое, которое больше или равно значению числа с плавающей точкой.

Возвращаемое значение: Число с плавающей точкой. Нет кодов ошибок.

Пример:



#include

double y;



y=ceil(1.05); /*y=2.0 */

y=ceil(-1.05); /*y=-1.0 */



Имя функции: FABS

#include

double fabs(x);

double x; значение с плавающей точкой



Описание: Функция fabs возвращает абсолютное значение своего аргумента с плавающей точкой.

Возвращаемое значение: Функция fabs возвращает абсолютное значение своего аргумента. Возвращаемого значения в случае ошибки нет.

Пример:



#include

double x,y;



y = fabs(x);.



Имя функции: FLOOR

#include

double floor(x);

double x; значение с плавающей точкой.



Описание: Функция floor возвращает значение с плавающей точкой, представляющее наибольшее целое, которое меньше или равно x.

Возвращаемое значение: Функция floor возвращает результат с плавающей точкой. Возвращаемого значения в случае ошибки нет.

Пример:



#include

double y;



y = floor(2.8); /* y = 2.0 */

y = floor(-2.8); /* y = -3.0 */



Имя функции: FMOD

#include

double fmod(x,y);

double x; значение с плавающей точкой.

double y;



Описание: Функция fmod вычисляет остаток от деления x на y с плавающей точкой, где x=iy+f, i - целое, f - имеет тот же знак, что x; а абсолютное значение x меньше, чем абсолютное значение y.

Возвращаемое значение.: Функция fmod возвращает остаток с плавающей точкой. Если y равно 0, функция возвращает 0.

Пример:



#include

double x,y,z;

x = -10.0;

y = 3.0;

z = fmod(x,y); /* z = -1.0 */.



Пример:



#include

int errno;

main()

{ float x,y;

for (errno=EDOM; errno==EDOM; y=asin(x)) {

printf("Sine=");

scanf("%f", &x);

errno = 0; }

printf("Arc sine of %f\n",x,y);}

На выходе:

Sine = -1.001

asin: DOMAIN error

Sine = -1

Arc sine of -1.000000=-1.570796



Имя функции: LDEXP

#include

double ldext(x,exp);

double x; значение с плавающей точкой

int *exp; целая экспонента



Описание.: Функция ldexp возвращает x, умноженное на 2 в степени exp.

Возвращаемое значение: ldexp возвращает x, умноженное на 2 в степени exp.В случае переполнения результата функция возвращает +HUGE или -HUGE (в зависимости от знака x) и устанавливает errno в ERANGE.

Пример:



#include

double x,y;

int p;

x = 1.5;

p = 5;

y = ldexp(x,p); /* y = 48.0 */



Имя функции: POW

#include

double pow(x,y);

double x; возводимое число

double y; степень числа x



Описание: Функция pow вычисляет x, возведенное в степень y.

Возвращаемое значение: Функция pow возвращает значение x в степени y. Если y равна 0, pow возвращает значение 1. Если x равно 0 и y отрицательная, pow устанавливает errno в ERANGE и возвращает HUGE. Если x отрицательное, а y не является целой, функция печатает сообщение об ошибке DOMAIN в stderr, устанавливает errno в ERANGE и возвращает либо положительное, либо отрицательное значение HUGE. В случае переполнения или потери значимости никакого сообщения не печатается.

Пример:



#include

double x = 2.0, y = 3.0, z;



z = pow(x,y); /* z = 8.0 */



Имя функции: SIN-SINH

#include

double sin(x); вычисляет синус x

double sinh(x); вычисляет гиперболический синус x

double x; радиан





Описание: Функции sin и sinh вычисляют соответственно синус и гиперболический синус x.

Возвращаемое значение.:Функция sin возвращает синус x. Если x большой, то может возникнуть частичная потеря значимости результата. В этом случае sin вырабатывает ошибку PLOSS, но сообщения не печатает. Если x настолько большой, что теряется общая значимость результата, тогда sin печатает сообщение об ошибке TLOSS в stderr и возвращает 0. В обоих случаях errno устанавливается в ERANGE. Функция sinh возвращает гиперболический синус x. Если результат большой, sinh возвращает значение HUGE (отрицательное или положительное, в зависимости от знака x) и устанавливает errno в ERANGE.

Обрaботкa ошибок может быть модифицировaнa при изменении процедуры matherr.

Пример:



#include

double pi = 3.1415926535,x,y;

x = pi/2;);

y = sin(x); /* y равен 1.0 */

y = sinh(x); /* y равен 2.3 */



Имя функции: SQRT

#include

double sqrt(x);

double x; неотрицательное значение с плавающей точкой



Описание: Функция sqrt вычисляет квадратный корень x.

Возвращаемое значение: Функция sqrt возвращает результат вычисления квадратного корня. Если x - отрицательное, функция печатает сообщение об ошибке DOMAIN в stderr, устанавливает errno в EDOM и возвращает 0.

Обрaботкa ошибок может быть модифицировaнa при изменении процедуры matherr.

Пример:



#include

#include

double x,y,z;



if ((z = sqrt(x+y))==o.0)

if((x+y) < 0.0)

perror("sqrt of a negative number");



Имя функции: TAN-TANH

#include

double tan(x); вычисляет тангенс x

double tanh(x); вычисляет гиперболический тангенс x

double x; радиан



Описание: Функции tan и tanh вычисляют соответственно тангенс и гиперболический тангенс x.

Возвращаемое значение: Функция tan возвращает тангенс x. Если x большой, при вычислениях может возникнуть частичная потеря значимости. В этом случае tan вырабатывает ошибку PLOSS, но сообщения не печатает. Если x настолько большой, что общая значимость результата теряется, тогда tan печатает сообщение об ошибке TLOSS в stderr и возв ращает 0. В обоих случаях errno устанавливается в ERANGE. Функция tanh возвращает гиперболический тангенс x.

Возвращаемого значения в случае ошибки нет.

Пример:



#include

double pi,x,y;

pi = 3.1415926535;

x = tan(pi/4.0); /* x равен 1.0 */

y = tanh(x); /* y равен 1.6 */

3. Математические ошибки

Ошибки, приведенные ниже, порождаются математическими процедурами библиотеки Си. Эти ошибки соответствуют только тем типам ошибок, которые объявлены в , и возвращаются функцией matherr.

Таблица 1.

Ошибка

Описание

DOMAIN

Аргумент для функции находится вне области определения функции.

(например log(-1));

OVERFLOW

Результат очень большой для предоставления его в возвращаемом значении.

(например exp(1000));

PLOSS

Возникла частичная потеря значимости.

SING

Особенность аргумента: аргумент для функции имеет неверное значение(например, пересылается значения 0 к той функции, которая требует ненулевого значения).

(например pow(0,-2));

TLOSS

Возникла общая потеря значимости.

(например sin(10e70))

UNDERFLOW

Результат очень маленький для предоставления его в возвращаемом значении.

(например exp(-1000));



Имя функции: matherr

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



Синтаксис #include

int matherr(struct exception *e);



matherr служит в качестве пользовательской ловушки, (функции определяемой пользователем) которую вы можете написать сами (смотрите пример). matherr сожно использовать для отслеживания ошибок области определения и выхода за пределы диапазона, происходящих в математических функциях. Она не отслеживает исключительных ситуаций, возникающих при работе со значениями с плавающей точкой (например при делении на 0). Для отслеживания таких ошибок смотри функцию signal.

Вы можете модифицировать процедуру matherr специально для вашего случая (то есть она будет отлавливать определенные типы ошибок); модифицированная функция matherr должна возвращать 0, если она не может обработать данную ошибку, и 1, если ошибка успешно обработана. Если функция matherr возвращает ненулевое значение, сообщение об ошибке не печатается, и переменная errno не изменяется.

Ниже приведена структура exception (определенная в файле math.h):



struct exception {

int type;

char *Function;

double arg1, arg2, retval;

};



Составные части структуры exception обозначают следующее:



Таблица 2.

Имя

Что это

Type

тип произошедшей математической ошибки; тип enum определен в typedef_mexcep (смотрите определение после данного списка).

Function

указатель на символьную строку с нулевым окончанием, содержащую имя библиотечной математической функции, которая выдала ошибку.

arg1,arg2

аргументы (переданные данной функции), которые вызвали ошибку; если функции передается только один аргумент, он хранится в arg1.

Retval

стандартное возвращаемое значение для функции matherr; вы можете модифицировать это значение.



Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Нет! Мы не выполняем работы на заказ, однако Вы можете попросить что-то выложить в наших социальных сетях.
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
4144
Авторов
на СтудИзбе
666
Средний доход
с одного платного файла
Обучение Подробнее