- •Содержание
- •Библиотеки
- •Подпрограммы классификации
- •Подпрограммы преобразования
- •Подпрограммы управления каталогом
- •Подпрограммы диагностики
- •Подпрограммы поддержки графики
- •Подпрограммы ввода/вывода
- •Интерфейсные подпрограммы (dos, 8086, bios)
- •Подпрограммы манипулирования (строками, памятью)
- •Математические подпрограммы
- •Подпрограммы распределения памяти
- •Прочие подпрограммы
- •Подпрограммы управления процессами
- •Cтандартные подпрограммы
- •Подпрограммы отображения текста в окнах
- •Подпрограммы работы со временем и датой
- •Подпрограммы с переменным списком аргументов
- •Environ
- •Errno, _doserrno, sys_errlist, sys_nerr
- •_Heaplen
- •_Osmajor, _osminor
- •_Stklen
- •Timezone
- •_Version
- •Absread
- •Abswrite
- •Allocmem
- •Asctime
- •Bdosptr
- •Bioscom
- •Biosdisk
- •Biosequip
- •Bioskey
- •Biosmemory
- •Biosprint
- •Biostime
- •Bsearch
- •_Clear87
- •Cleardevice
- •Clearerr
- •Closegraph
- •_Control87
- •Coreleft
- •Country
- •Сprintf
- •Creatnew
- •Creattemp
- •Ctrlbrk
- •Delline
- •Detectgraph
- •Difftime
- •Disable
- •Dosexterr
- •Dostounix
- •Drawpoly
- •Ellipse
- •Exec...
- •Farcalloc
- •Farcoreleft
- •Farfree
- •Farmalloc
- •Farrealloc
- •Fcloseall
- •Fgetchar
- •Fgetpos
- •Filelength
- •Fillellipse
- •Fillpoly
- •Findfirst
- •Findnext
- •Floodfill
- •Flushall
- •Fnmerge
- •Fnsplit
- •_Fpreset
- •Fprintf
- •Fputchar
- •Freemem
- •Freopen
- •Fsetpos
- •Geninterrupt
- •Getarccoords
- •Getaspectratio
- •Getbkcolor
- •Getcbrk
- •Getchar
- •Getcolor
- •Getcurdir
- •Getdate
- •Getdefaultpalette
- •Getdfree
- •Getdisk
- •Getdrivername
- •Getfatd
- •Getfillpattern
- •Getfillsettings
- •Getftime
- •Getgraphmode
- •Getimage
- •Getlinesettings
- •Getmaxcolor
- •Getmaxmode
- •Getmaxx
- •Getmaxy
- •Getmodename
- •Getmoderange
- •Getpallete
- •Getpalettesize
- •Getpass
- •Getpixel
- •Gettext
- •Gettextinfo
- •Gettextsettings
- •Gettime
- •Getvect
- •Getverify
- •Getviewsettings
- •Graphdefaults
- •Grapherrormsg
- •_Graphfreemem
- •_Graphgetmem
- •Graphresult
- •Harderr
- •Hardresume
- •Hardretn
- •Highvideo
- •Imagesize
- •Initgraph
- •Inportb
- •Insline
- •Installuserdriver
- •Installuserfont
- •Intdosx
- •Isalnum
- •Isalpha
- •Isascii
- •Iscntrl
- •Isdigit
- •Isgraph
- •Islower
- •Isprint
- •Ispunch
- •Isspace
- •Isupper
- •Isxdigit
- •Linerel
- •Loсaltime
- •Longjmp
- •Lowvideo
- •Lsearch
- •_Matherr
- •Matherr
- •Memccpy
- •Memicmp
- •Memmove
- •Movedata
- •Moverel
- •Movetext
- •Normvideo
- •Nosound
- •Outport
- •Outportb
- •Outtext
- •Outtextxy
- •Parsfnm
- •Pieslice
- •Putchar
- •Putimage
- •Putpixel
- •Puttext
- •Randbrd
- •Randbwr
- •Randomize
- •Realloc
- •Rectangle
- •Registerbgidriver
- •Registerbgifont
- •Restorecrtmode
- •Searchpath
- •Segread
- •Setactivepage
- •Setallpalette
- •Setaspectratio
- •Setbkcolor
- •Setblock
- •Setcbrk
- •Setcolor
- •Setdate
- •Setdisk
- •Setfillpattern
- •Setfillstyle
- •Setftime
- •Setgraphbufsize
- •Setgraphmode
- •Setlinestyle
- •Setmode
- •Setpalette
- •Setrgbpalette
- •Settextjustify
- •Settextstyle
- •Settime
- •Setusercharsize
- •Setvbuf
- •Setvect
- •Setverify
- •Setviewport
- •Setvisualpage
- •Setwritemode
- •Spawn...
- •Sprintf
- •_Status87
- •Strcmpi
- •Strcspn
- •_Strerror
- •Strerror
- •Stricmp
- •Strncat
- •Strncmp
- •Strncmpi
- •Strncpy
- •Strnicmp
- •Strnset
- •Strpbrk
- •Strrchr
- •Strtoul
- •Textattr
- •Textbackground
- •Textcolor
- •Textheight
- •Textmode
- •Textwidht
- •Tmpfile
- •Toascii
- •_Tolower
- •Tolower
- •_Toupper
- •Toupper
- •Ungetch
- •Unixtodos
- •Vfprintf
- •Vfscanf
- •Vprintf
- •Vsprintf
- •Vsscanf
Matherr
-----------------------------------------------------------------
НазначениеПрограмма обработки математических ошибок,
модифицируемая пользователем.
Синтаксис#include<math.h>
int matherr(struct exeption *e);
Прототип вmath.h
Замечанияmather вызывается функцией _mather для обработ-
ки ошибок функций библиотеки math.h.
По умолчанию в Турбо Си программа matherr прос-
то возвращает 0. Она служит как заготовка, ко-
торую можно заменить, написав свою программу
обработки ошибок (см. приведенный ниже пример
обработки ошибок, определенный пользователем).
Вы можете изменить matherr до сложной программы
обработки ошибок (как, например, распознавание
и исправление некоторых типов ошибок); изменен-
ная matherr должна возвращать 0, если она не
смогла исправить ошибку, и - не ноль, если
ошибка исправлена. Когда matherr возвращает не
ноль, то сообщение об ошибке не печатается и
errno не изменяется.
Структура exeption, определенная в math.h, име-
ет вид:
struct exeption {
+ int type;
char *name;
double arg1,arg2,retval;
};
Эти поля структуры следующие:
-----------------------------------------------------------------
Поле Что оно представляет.
-----------------------------------------------------------------
type тип обнаруженной математической ошибки; описан типом enum
в typedef _mexcep (описание приведено ниже)
name указатель на 0-оканчивающуюся строку, содержащую имя биб-
лиотечной функции, в которой произошла ошибка
arg1, аргументы (переданные функции, указанной в name),
аrg2 которые вызвали ошибку; если функции был передан только
один аргумент - он сохраняется в arg1
retval значение для matherr, возвращаемое по умолчанию; может
быть изменено вами
-----------------------------------------------------------------
typedef _mexcep, описанное в math.h, определяет
следующие символические константы, соответству-
ющие возможным математическим ошибкам:
-----------------------------------------------------------------
Символьная
константа Математическая ошибка
-----------------------------------------------------------------
DOMAIN аргумент не входит в область определения функции,
например: log(-1)
SING аргументы дают бессмысленное значение функции,
например: pow(0,-2)
OVERFLOW аргумент дает результат функции больше, чем
MAXDOUBLE, например: exp(1000)
UNDERFLOW аргумент дает результат функции меньше, чем
MINDOUBLE, например: exp(-1000)
TLOSS аргумент дает результат функции с потерей всех
значащих цифр, например: sin(10e70)
-----------------------------------------------------------------
Символьные константы MAXDOUBLE и MINDOUBLE оп-
ределены в values.h
Отметим, что _matherr не может быть изменена.
Функция matherr очень широко используется в
библиотеках поддержки Си и поэтому рекомендует-
ся ее использование для написания машинно-неза-
висимых программ.
Поведение по умолчанию функции matherr в стиле
ОС UNIX (т.е. печать сообщений и завершение ра-
бот) является несовместимым с ANSI-стандартом.
Eсли вы предпочитаете версию matherr, как в
UNIX, то используйте MATHERR.C, поставляемую на
дистрибутивных дискетах Турбо Си.
ВозвращаемоеПо умолчанию matherr возвращает просто 1,
значениеесли возникла ошибка UNDERFLOW или TLOOS -
функция возвращает 0. matherr может также изме-
нить e->retval, которая вернется в вызвавшую
программу через _matherr.
Когда matherr возвращает 0 (показывая, что нес-
пособна обработать ошибку), _matherr устанавли-
вает errno и печатает сообщение об ошибке (см.
для большей информации _matherr).
Когда matherr возвращает не 0 (что говорит о
возможности исправления ошибки), errno не уста-
навливается и сообщения не печатаются.
Переносимостьmatherr переносима для многих компиляторов язы-
ка Си. Функция matherr в стиле ситемы UNIX на-
ходится в MATHERR.С на дистрибутивных дискетах
Турбо Си.
Смотри также_matherr
Пример
/* Приведена написанная пользователем функция
matherr, обнаруживающая отрицательные аргу-
менты, передаваемые в sgrt, и преобразующая
их в положительные перед запуском sgrt.*/
#include<math.h>
#include<string.h>
int matherr (struct exception *a)
{
if ( a->type == DOMAIN )
{
if (strcmp ( a->name, "sgrt" ) == 0)
{
a->retval = sgrt (- (a->arg1));
return(1);
}
}
return (0);
}
-----------------------------------------------------------------
max
-----------------------------------------------------------------
НазначениеВозвращает большее из двух значений
Синтаксис #include<stdlib.h>
(type)max(a,b);
Прототип вstdlib.h
ЗамечанияЭта функция сравнивает два значения и
возвращает большее из них. Оба аргумента и сама
функция должны быть одного типа.
Возвращаемоеmax возвращает большее из двух значений
значение
Пример #include<stdlib.h>
main()
{
int x = 5;
int y = 6;
int z;
z = (int)max(x,y);
printf("Наибольшее число %d\n",z);
}
Вывод программы:
Наибольшее число 6
-----------------------------------------------------------------