Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Подбельский учебник с++ / Подбельский - главы 10-12

.pdf
Скачиваний:
28
Добавлен:
22.05.2015
Размер:
1.46 Mб
Скачать

496

Имяконстанты

DBL DIG

DBL_EPSILON

DBL_MANT_DIG

DBL MAX

DBL_MAX_EXP

DBL MAX 10 EXP

DBL_MIN

DBL_MIN_EXP

DBL_MIN_10_EXP

Язык Си++

Таблица П2.2 (продолжение)

Стандартное Смысл

значение

10Количество верных десятичных цифр для типа double

1E-9

Минимальное х, такое, что 1.0 + х * 1.0, где

 

х принадлежит типу double

 

Количество цифр по основанию

 

FLT_RADIX в мантиссе для чисел типа

 

double

1E+37 Максимальное число с плавающей точкой

 

типа double

 

Максимальное п, такое, что FLT_RADIX" -

 

I представимо в виде числа типа double

+37

Максимальное целое л, такое, что 10" пред-

 

ставимо как double

1E-37

Минимальное нормализованное число с

 

плавающей точкой типа double

 

Минимальное л, такое, что 10" представимо

 

в виде нормализованного числа типа double

- 37

Минимальное отрицательное целое л, такое,

 

что 10" - в области определения чисел типа

 

double

ПРИЛОЖЕНИЕ 3

 

СТАНДАРТНАЯ БИБЛИОТЕКА ФУНКЦИЙ ЯЗЫКА СИ

 

 

Таблица ПЗ. 1

 

 

Математические функции - файл math. h

Функция

Прототип и краткое описание действий

 

 

abs

int abs(int i);

 

Возвращает абсолютное значение целого аргумента i.

acos

double acos(double x ) ;

 

Функция арккосинуса. Значение аргумента должно находиться в

 

диапазоне от-1 до +1.

asin

double asin(double ж);

 

Функция арксинуса. Значение аргумента должно находиться в

 

диапазоне от -1 до +1.

atan

double atan(double х);

 

Функция арктангенса.

atan2

double atan2(double у, double х);

 

Функция арктангенса от значения у/х.

cabs

double cabs(struct complex znum);

 

Вычисляет абсолютное значение комплексного числа znum.

 

Определение структуры (типа) complex - в файле math. h.

cos

double cos(double x) ;

 

Функция косинуса. Угол (аргумент) задается в радианах.

cosh

double cosh(double x);

 

Возвращает значение гиперболического косинуса х.

exp

double exp(double x);

 

Вычисляет значение е' (экспоненциальная функция).

fabs

double

fabs(double x);

 

Возвращает абсолютное значение вещественного аргумента х

 

двойной точности.

floor

double

floor(double x);

 

Находит наибольшее целое, не превышающее значения х. Воз-

 

вращает его в форме double.

32-

498

Язык Си++

 

Таблица ПЗ. 1 (продолжение)

Функция

Прототипикраткоеописаниедействий

fraod

double fmod(double x, double y) ;

 

Возвращает остаток от деления нацело х на у.

hypot

double hypot(double х, double у ) ;

 

Вычисляет гипотенузу х прямоугольного треугольника по значе-

 

ниям катетов х, у (г2 = х1 + у2)

labs

long labs(long x);

 

Возвращает абсолютное значение целого аргумента long x.

Idexp

double Idexp(double v, int e) ;

 

Возвращаетзначениевыраженияv•2".

log

double log(double x);

 

Возвращает значение натурального логарифма (In x).

log 10

double loglO(double x);

 

Возвращает значениедесятичного логарифма (logio x).

poly

double poly(double x, int n, double с[ ] ) ;

 

Вычисляет значение полинома:

 

c[n]xn + c[n - ljx"" 1 + .. . + c [ l ] x + c[0]

pow

double pow(double x, double y);

 

Возвращает значение xY, т.е. х в степени у.

powlO

double powlO(int p);

 

Возвращает значение 1(F.

sin

double sin(double x);

 

Функция синуса. Угол (аргумент) задается в радианах.

sinh

double sinh(double x);

 

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

sqrt

double sqrt(double x);

 

Возвращает положительное значение квадратного корня vx .

tan

double tan(double x);

 

Функция тангенса. Угол (аргумент) задается в радианах.

tanh

double tanh(double x);

 

Возвращает значение гиперболического тангенса для х.

Приложение 3. Стандартная библиотека функций языка Си

499

 

 

 

Таблица ПЗ. 2

Функции проверки и преобразования символов - файл ctype. h

 

Функция

 

Прототип и краткое описание действий

 

isalnum

i n t

isalnum(int

с ) ;

 

 

Дает значение не нуль, если с - код буквы или цифры (А + Z, а +

 

z, 0 + 9), и нуль - в противном случае.

 

isalpha

i n t

isalpha(in t

с ) ;

 

 

Дает значение не нуль, если с - код буквы (А + Z, а + г), и нуль -

 

в противном случае.

 

isascii

i n t

i s a s c i i ( i n t

с ) ;

 

 

Дает значение не нуль, если с есть код ASCII, т.е. принимает зна-

 

чение от 0 до 127, в противном случае - нуль.

 

iscntrl

i n t

i s c n t r l ( i n t

с ) ;

 

 

Дает значение не нуль, если с - управляющий символ с кодами

 

 

0x00 + OxOlF или 0x7F, и нуль - в противном случае.

 

isdigit

i n t

i s d i g i t ( i n t

с ) ;

 

 

Дает значение не нуль, если с - цифра (0 + 9) в коде ASCII, и нуль

 

- в противном случае.

 

isgraph

in t

isgraph(int

с ) ;

 

 

Дает значение не нуль, если с - видимый (изображаемый) символ

 

с кодом (0x21 + 0х7Е), и нуль - в противном случае.

 

islower

i n t

islower(in t

с ) ;

 

 

Дает значение не нуль, если с - код символа на нижнем регистре

 

(а + z), и нуль - в противном случае.

 

isprint

int

isprint(int

с) ;

 

 

Дает значение не нуль.если с - печатный символ с кодом (0x20 +

 

0х7Е), и нуль - в противном случае.

 

ispunct

int ispunct (i^.c с) ;

 

 

Дает значение не нуль, если с - символ-разделитель

 

 

(соответствует iscntrl или isspase), и нуль - в противном

 

 

случае.

 

 

isspace

int

isspace(int с);

 

 

Дает значение не нуль, если с - обобщенный пробел: пробел,

 

символ табуляции, символ новой строки или новой страницы, символ возврата каретки (0x09 + OxOD, 0x20), и нуль - в противном случае. .

32*

500

Язык Си++

 

Таблица П3.2 (продолжение)

Функция

Прототипикраткоеописаниедействий

isupper

i n t iaupper(int c ) ;

 

Даег значение не нул?^, если с - код символа на верхнем регистре

 

(А + Z), и нуль - в противном случае.

isxdigit

int iaxdigit(int с);

 

Дает значение не нуль, если с - код шестнадцатеричной цифры (0

 

+ 9, А + F, а + f), и нуль - в противном случае.

toascii

in t t o a e o i i ( i n t с ) ;

 

Преобразует целое число с в символ кода ASCII, обнуляя асе

 

биты, кроме младших семи. Результат от 0 до 127.

tolower

i n t tolower(int с ) ;

 

Преобразует код буквы с к нижнему регистру, остальные коды не

 

изменяются.

toupper

in t toupper(int с ) ;

 

Преобразует код буквы с к верхнему регистру, остальные коды

 

не изменяются.

Таблица П3.3

Функции ввода-вывода для стандартных файлов - файл • tdio . h

Функция Прототипикраткоеописаниедействий

getch

in t getch(void);

 

Считывает один символ с клавиатуры без отображения на экра-

 

не.

getchar

i n t getchar(void);

 

Считывает очередной символ из стандартного входного файла

 

(stdin).

gets

char *gets(char *s) ;

 

Считывает строку а из стандартного входного файла (stdin).

printf

in t printf(char «format [, argument, . . . ] ) ;

 

Функция форматированного вывода в файл stdout.

putchar

i n t putchar(int с ) ;

 

Записывает символ с в стандартный файл вывода (stdout).

Приложение 3. Стандартная библиотека функций языка Си

501

 

Таблица П3.3

(продолжение)

Функция

Прототипикраткоеописаниедействий

puts

in t put*(conat char ••);

 

 

 

Записывает строку а в стандартный файл вывода (stdout).

scanf

in t acanf(char 'format[, argument,

. . . ] ) ;

 

Функция форматированного ввода га файла stdin.

 

sprintf

in t aprintf(char *a,char *format[,

argument,

 

...]);

 

 

 

Функция форматированной записи в строку а.

 

sscanf

int secanf(char •в,char *format [, address,

 

...]);

 

 

 

Функция форматированного чтения из строки а.

 

ungetch

in t ungetch(int с ) ;

 

 

 

Возвращает символ с в стандартный файл ввода stdin, заставляя

 

его быть следующим считываемым символом.

 

Таблица П3.4

Функции для работы со строками - файлы atring. h, atdlib. h

Прототипикраткоеописаниедействий

double atof(char *etr);

Преобразует строку atr в вещественное число типа double.

int atoi(char *atr);

Преобразует строку atr в десятичное целое число.

long atol(char *atr);

Преобразует строку atr в длинное десятичное целое число.

char *itoa(int v, char *atr, int baz);

Преобразует целое v в строку atr. При изображении числа используется основание baz (2 < baz < 36). Для отрицательного числа и baz = 10 первый символ - "минус" (-).

char +ltoa(long v, char *str, int baz); Преобразует длинное целое v в строку atr. При изображении числа используется основание baz (2 < baz < 36).

char *вtreat(char +ap, char *si);

Приписывает строку ai к строке ар (конкатенация строк).

502

Язык Си++

 

Таблица П3.4 (продолжение)

Функция

Прототип и краткое описание действий

strchr

char *strchr(char *str, int с);

 

Ищет в строке str первое вхождение символа с.

strcmp

int strcmp(char *strl, char *str2);

 

Сравнивает строки etrl и str2. Результат отрицателен, если

 

strl < str2; равен нулю, если atrl = str2 и положителен,

 

если strI > str2 (сравнение беззнаковое).

strcpy

char *strcpy(char *sp, char *si);

 

Копирует байты строки si в строку ер.

strcspn

int strcspn(char *strl, char *str2);

 

Определяет длину первого сегмента строки strl, содержащего

 

символы, не входящие во множество символов строки str2.

strdup

char *strdup(const char *str);

 

Выделяет память и переносит в нее копию строки str.

strlen

unsigned strlen(char *str);

 

Вычисляет длину строки str.

strlwr

char *strlwr(char *str);

 

Преобразует буквы верхнего регистра в строке в соответствую-

 

щие буквы нижнего регистра.

strncat

char *strncat(char *sp, char *si, int kol);

 

Приписывает kol символов строки si к строке sp

 

(конкатенация).

strncmp

int strncrap(char *strl, char *str2, int kol);

 

Сравнивает части строк strl и str2, причем рассматриваются

 

первые kol символов. Результат отрицателен, если strl <

 

str2; равен нулю, если strl = str2 и положителен, если

 

strl > str2.

strncpy

char *strncpy(char *sp, char *si, int kol);

 

Копирует kol символов строки si в строку sp ("хвост" отбрасы-

 

вается или дополняется пробелами).

strnicmp

char *stricmp(char *strl, char *str2, int kol) ;

 

Сравнивает не более kol символов строки strl и строки str2,

 

не делая различия регистров (см. функцию strncmp ()).

Приложение 3. Стандартная библиотека функций языка Си

503

 

Таблица 173.4 (продолжение)

Функция

Прототипикраткоеописаниедействий

 

strnset

char *strnset(char *str, int c, int kol);

 

 

Заменяет первые kol символов строки str символом с.

strpbrk

char *strpbrk(char *strl, char *str2);

 

 

Ищет в строке strl первое появление любого из множества сим-

 

волов, входящих в строку str2.

 

strrchr

char *strrchr(char *str, int c) ;

 

 

Ищет в строке str последнее вхождение символа с.

 

strset

int street(char *str, int с);

 

 

Заполняет строку str заданным символом с.

 

strspn

int strspn(char *strl, char *str2);

 

 

Определяет длину первого сегмента строки strl, содержащего

 

только символы, из множества символов строки str2.

strstr

char «strstr(const char *strl, const char

*str2);

Ищет в строке strl подстроки str2. Возвращает указатель на

 

 

тот элемент в строке strl, с которого начинается подстрока

 

str2.

 

strtod

double *etrtod(const char *str, char **endptr);

Преобразует символьную строку str в число двойной точности.

 

 

Если endptr не равен NULL, то *endptr возвращается как указа-

 

тель на символ, при достижении которого прекращено чтение

 

строки str.

 

strtok

char *strtok(char *strl, const char *str2);

 

Ищет в строке strl лексемы, выделенные символами из второй

 

строки.

 

strtol

long *strtol(const char *str, char **endptr, int

 

baz) ;

 

 

Преобразует символьную строку str к значению "длинное чис-

 

ло" с основанием baz (2 < baz < 36). Если endptr не равен NULL,

 

то •endptr возвращается как указатель на символ, при дости-

 

жении которого прекращено чтение строки str.

 

strupr

char *strupr(char *str);

 

 

Преобразует буквы нижнего регистра в строке str в буквы верх-

 

него регистра.

 

ultoa

char *ultoa(unsigned long v, char *str, int baz);

 

Преобразует беззнаковое длинное целое v в строку str.

504

 

 

 

Язык Си++

 

 

 

 

 

 

Таблица ПЗ. 5

 

Функции для выделения и освобождения памяти —

 

 

 

 

файлы s t d l i b . h, a l l o c . h

Функция

 

 

 

Прототип икраткоеописаниедействий

calloc

void

*calloc(unsigned n,

unsigned m) ;

 

Возвращает указатель на начало области динамически распреде-

 

ленной памяти для размещения п элементов по ш байт каждый.

 

При неудачном завершении возвращает значение NULL.

coreleft

unsigned

coreleft (void)

;

- для моделей памяти tiny, small,

 

medium.

 

 

 

 

 

unsigned

long coreleft (void) ; -для других моделей па-

 

мяти.

 

 

 

 

 

 

Возвращает значение объема неиспользованной памяти, функция

 

уникальная для DOS, где приняты упомянутые модели памяти.

free

void free (void *Ы) ;

 

 

 

Освобождает ранее выделенный блок динамически распределяе-

 

мой памяти с адресом первого байта Ы.

mailoc

void *malloc(unsigned s ) ;

 

Возвращает указатель на блок динамически распределяемой па-

 

мяти длиной s байт. При неудачном завершении возвращает зна-

 

чениеNULL.

 

 

 

realloc

void

*realloc(void *bl,

 

unsigned n s ) ;

 

Изменяет размер ранее вьщеленнои динамической памяти с адре-

 

сом начала Ы до размера ns байт.Если Ы равен NULL, то функ-

 

ция выполняется как mailoc ().

 

 

 

 

 

 

Таблица ПЗ. 6

Функции для работы с терминалом в текстовом режиме - файл c o n i o . h

Функция

 

 

Прототип и краткое описание действий

clreol

 

void

clreol(void);

 

 

 

Стирает символы от позиции курсора до конца строки в

 

 

текстовом окне.

 

 

clrscr

 

void

clrscr(void);

 

 

 

Очищает экран.

 

 

cgets

 

char

*cgets(char

*str) ;

 

 

Выводит на экран строку str.

Приложение 3. Стандартная библиотека функций языка Си

505

 

 

 

 

Таблица П3.6 (продолжение)

Функция

 

Прототипикраткоеописаниедействий

 

cprintf

i n t

c p r i n t f

( c h a r

* f o r m a t [ ,

a r g u m e n t ,

. . . ] ) ;

 

Выводит форматированную строку-в текстовое окно, соз-

 

данное функцией window () .

 

 

 

cputs

int cputs(char *str);

 

 

 

 

Считывает в символьный массив s t r строку с клавиатуры

 

(консоли).

 

 

 

 

 

cscanf

i n t

c s c a n f

( c h a r * f o r m a t

[ ,

a d d r e s s , . . . ] ) ;

 

Функции ввода-вывода информации, которые используют-

 

ся при работе с терминалом в текстовом режиме

 

delline

void delline(void);

 

 

 

 

Удаляет строку в текстовом окне (где находится курсор).

gotoxy

v o i d

g o t o x y ( i n t x ,

i n t

у ) ;

 

 

 

Перемещает курсор в позицию текстового окна с коорди-

 

натами (х, у).

 

 

 

 

 

highvideo

void highvideo(void);

 

 

 

 

Повышает яркость символов, выводимых после нее на эк-

 

ран.

 

 

 

 

 

 

movetext

int movetext(int xO,int yO,int xl,int y2,int

 

x,int y);

 

 

 

 

 

 

Переносит текстовое окно в область экрана, правый верх-

 

ний угол которой имеет координаты (х, у). Координаты

 

угловых точек окна - (хО, уО), (xl, yl).

 

normvideo

void normvideo(void);

 

 

 

 

Устанавливает нормальную яркость выводимых на экран

 

символов.

 

 

 

 

 

textattr

void textattr(int newattr);

 

 

 

Устанавливает атрибуты (фон, цвет) символов, выводимых

 

на экран.

 

 

 

 

 

textbackground

void textbackground(int с);

 

 

 

Устанавливает цвет фона по значению параметра с.

 

textcolor

void textcolor(int с);

 

 

 

 

Устанавливает цвет символов по значению параметра с.

textmode

void textmode(int m);

 

 

 

 

1ереводит экран в текстовый режим по значению парамет-

 

>ат.

 

 

 

 

 

 

506

Функция wherex

wherey

Язык Си++

Таблица П3.6 (продолжение)

Прототип и краткое описание действий

i n t wherex(void);

Возвращает значение горизонтальной координаты курсора.

i n t wherey(void);

Возвращает значение вертикальной координаты курсора.

window

void window(int xO,int yO,int xl,in t y l ) ;

 

Создает текстовое окно по координатам угловых точек

 

(xO,yO),(xl,yl).

Функции из табл. П3.6 поддерживаются только на IBM PC и совместимых с ним компьютерах.

Таблица ПЗ.7

Специальные функции

Местона-

Функция Прототип и краткое описание действий хождение прототипа

delay

void

delay(unsigned

x);

 

dos . h

 

Приостанавливаетвыполнение программы на х

 

 

мсек.

 

 

 

kbhit

i n t

kbhit (void) ;

 

 

conio.h

 

Возвращает ненулевое целое, если в буфере кла-

 

 

виатуры присутствуют коды нажатия клавиш, в

 

 

противном случае - нулевое значение.

 

 

i n t

memcmp(void *sl, void *s2,

 

memcmp

unsigned n ) ;

 

 

mem.h

Сравнивает посимвольно две области памяти si и

 

 

 

s2 длиной п байт. Возвращает значение меньше

 

 

нуля, если si < s2, нуль, если si

»» s2 и

 

 

больше нуля, если si >

s2.

 

 

 

void

*memcpy(const

void *p,

const void

 

memcpy

* i ,

unsigned n ) ;

 

 

mem.h

Копирует блок длиной п байт из области памяти i

 

 

в область памяти р.

Приложение З. Стандартная библиотека функций языка Си

507

Таблица ПЗ. 7 (продолжение)

 

 

 

 

 

Местона-

Функция

 

Прототип и краткое описание действий

хождение

 

 

 

 

 

прототипа

memicmp

int memicmp (void *sl,

void *s2,

mem.h

 

unsigned n);

 

 

 

 

Подобнаmemcmp, затем исключением, что игно-

 

 

рируются различия между буквами верхнего и

 

 

нижнегорегистра.

 

 

 

memmove

void

*memmove (void *dest, const void

mem.h

 

*src, i n t n ) ;

 

 

 

 

Копирует блок длиной п байтов из src в dest.

 

 

Возвращает указатель dest.

 

memset

void

*memset (void *s,

int c, unsigned

mem.h

 

nj ,

 

 

 

 

 

Записывает во все байты области памяти s значе-

 

 

ние с. Длина области s равна п байт.

 

nosound

void

nosound(void);

 

 

dos.h

 

Прекращает подачу звукового сигнала, начатую

 

 

функцией sound().

 

 

 

peek

i n t

peek(unsigned s,

unsigned c ) ;

dos.h

 

Возвращаетцелоезначение(слово), записанноев

 

 

сегменте s со смещением с.

 

 

peekb

char

peekb(unsigned

s,

unsigned с ) ;

dos.h

 

Возвращает один байт, записанный в сегменте s

 

 

со смещением с, т.е. по адресу s: с.

 

poke '

void

poke(unsigned s,

unsigned с, i n t

dos.h

 

v) ;

 

 

 

 

 

Помещает значение v в слово сегмента з со сме-

 

 

щением с, т.е. по адресу а: с.

 

pokeb

void

pokeb(unsigned

s,

unsigned с,

dos.h

 

char

v);

 

 

 

 

To же, что и poke, но помещает один байт v по

 

 

адресу s: с.

 

 

 

rand

int

rand(void);

 

 

stdlib.h

Возвращает псевдослучайное целое число из диапазона 0 +215 - 1, может использовать s r a n d () .

508

Функция

signal

sound

srand

Язык Си++

Таблица ПЗ. 7 (продолжение)

Прототип икраткое описание действий

i nt signal(in t s i g ) ;

Вызывает программный сигнал с номером fig. Используется для обработки исключительных ситуаций в языке Си.

Местонахождение прототипа

signal.h

void sound(unsigned f) ;

dos.h

Вызьшает звуковой сигнал с частотой f Гц.

 

void srand(unsigned seed);

stdlib.h

Функция инициализации генератора случайных

 

чисел (rand); seed - любое беззнаковое целое

 

число.

 

ПРИЛОЖЕНИЕ 4

ГРАФИЧЕСКАЯ БИБЛИОТЕКА ВС++

Графические средства в языке Си++ и в его предшественнике - в языке Си полностью отсутствуют. Все возможности для работы с графикой конкретные реализации предоставляют в виде дополнительных библиотек графических функций. В нескольких местах книги были использованы в иллюстративных целях возможности графического представления объектов (принадлежащих классам, вводимым программистом). В качестве инструмента для работы с графикой была использована графическая библиотека под MS-DOS компиляторов фирмы Borland, так как эти компиляторы наиболее доступны в нашей стране, особенно на маломощных ПЭВМ,и чаще всего используются в учебном процессе. Никаких других причин для выбора именно этой графической библиотеки и этих компиляторов не было. Пояснения по отдельным функциям графической библиотеки даны в основном тексте соответствующих глав. Здесь приводится список библиотечных функций, которые могут быть полезными при самостоятельном решении задач, связанных с графикой. Приводиьюй информации иногда оказывается недостаточно для безошибочного применения той или иной функции, но возможность получения справок при работе с компилятором в диалоговом режиме обычно позволяет быстро устранить возникающие затруднения.

Для работы с графической библиотекой необходимо включить в программу заголовочный файл graphics .h.

Таблица П4.1

Функциидляуправленияграфическойсистемой

Функция

Прототип и краткое описание действий

i

closegraph

void far closegraph(void);

 

 

Перевод системы в текстовый режим (из графического

 

 

режима)

 

graphdefaults

void far graphdefaults(void);

 

 

Устанавливает по умолчанию все параметры графической

 

системы (параметры заполнения, палитру, правила вы-

 

 

равнивания текста и т.п.)

 

510

Функция

_graphfreemem

_graphgetmem

Язык Си++

Таблица П4.1 (продолжение)

Прототип икраткоеописание действий

void far _graphfreemem(void far *ptr, unsigned size);

Введение этой функции в программу позволяет программисту отслеживать запросы на освобождение size байт памяти функциями графической библиотеки

void far * far _graphgetmem(unsigned size); Введение этой функции в программу позволяет программисту отслеживать запросы на выделение size байт памяти функциями графической библиотеки

initgraph

void far initgraph(int far

*graphdriver, int

 

far *graphmode, char far *pathtodriver);

 

Перевод системы в графический режим (из текстового

 

режима), инициализация графики

 

installuserdriver

int far installuserdriver(char far *name,

 

int huge *detect)(void));

 

 

Добавляет новый графический драйвер name (.BGI) в таб-

 

лицу драйверов BGI (BGI - Borland Graphics Interface)

installuserfont

int far installuserfont(char far *name);

 

Устанавливает шрифты, содержащиеся в файле name

 

(.CHR)

 

registerbgidriver

int registerbgidriver(void

(*driver) (void));

 

Регистрирует драйвер driver, встроенный в текущую

 

выполняемую программу

 

registerbgifont

int registerbgifont(void (*font)(void));

 

Регистрирует шрифт font, встроенный в текущую выпол-

 

няемую программу

 

restorecrtmode

void far restorecrtmode(void);

 

Временный переход в текстовый режим, из которого была

 

вызвана функция initgraph ()

 

setgraphbufsize

unsigned far setgraphbufsize(unsigned

bufsize);

Устанавливает размер внутреннего буфера для графических функций

Приложение 4. Графическая библиотека ВС++

511

 

ТаблицаП4.2

 

Функции для установки параметров изображения

 

Функция

Прототип и краткое описание действий

 

setactivepage

void far setactivepage(int page);

 

 

Устанавливает активной для вывода графики страницу

 

 

page

 

setallpalette

setaspectratio

setbkcolor

setcolor

_setcursortype (прототип содержится в файле couio.h)

setfdlpattern

setgraphmode

setfflbtyfe

setlinestyle

setpalette

void far setallpalette(struct palettetype far +palette);

Устанавливаетвсе цвета палитры

void far setaspectratio(int xasp, int yasp); Устанавливает коэффициент сжатия по координатам х и у

void far setbkcolor(int color); Установка цвета фона

void far setcolor(int color); Установка цвета точки (изображения)

void setcursortype(int cur_t);

Устанавливает тип отображения курсора для текстовых режимов

void far setfillpattern(char far *upattern, int color);

Установка заданного пользователем шаблона закраски экрана или области экрана

void far setgraphmode(int mode);

Переход к графическому режиму, отличному от установленного функцией ini tgraph () .

void far setfillstyle(int pattern, int color);

Установка одного из стандартных шаблонов заполнения экрана или области экрана

void far setlinestyle(int linestyle, unsigned upattern, int thickness); Установка толщины и типа изображаемой линии

void far setpalette(int colornum, int color);

Устанавливает один из цветов палитры

512

 

 

Язык Си++

 

 

 

 

 

Таблица П4.2 (продолжение)

Функция

 

Прототип и краткое описание действий

 

 

 

 

 

 

setrgbpalette

void far

setrgbpalette(int colornum, int

 

red, int green, int blue);

 

 

 

 

Устанавливаетцветадля графического адаптера IBM 8514

settextjustify

void far settextjustify(int horiz, int

 

vert);

 

 

 

 

 

 

 

 

Установка правил выравнивания текста при горизонталь-

 

ном или вертикальном выводе функцией o u t t e x t ()

settextstyle

void far settextstyle(int font, int

 

direction, int charsize);

 

 

 

 

Установка стиля (шрифт, размеры символов) текста, вы-

 

водимого функцией outtext ()

 

setusercharsize

void far

setuserchnrsize(int multx, int

 

divx,

int mult^,

int divy);

 

 

 

 

Установка размеров символов, выводимых ц графическом

 

режиме

 

 

 

setviewport

void

far

setviewport(int left, int top,

int

righ, int bottom, int clip);

 

 

 

 

Установка размеров текущего окна экрана для вывода

 

изображений илитекста

 

setvisualpage

void far

setvisualpage(int page);

 

Делает видимой графическую страницу page

 

 

 

setwriteraode

void far

setwritemode(int mode);

 

 

Устанавливаетрежим вывода линий в графическом режиме

 

 

 

 

Таблица П4.3

 

Функции для получения изображения на экране

 

Функция

 

 

Прототип и краткое описание действий

 

 

 

 

 

 

arc

void

far

arc(int

x, int y, int stangle,

int

endangle, int radius);

 

 

 

 

Вычерчивание дуги окружности с центром (х, у)

bar

void far bar(int

left, int top, int right,

int

bottom);

 

 

 

 

 

Вычерчивание закрашенного прямоугольника

Приложение 4. Графическая библиотека ВС++

513

Функция

bar3d

Таблица П4.3 (продолжение)

Прототип и краткое описание действий

void far bar3d(int left, int top, int right, int bottom, int depth, int topflag); Вычерчивание закрашенного параллелепипеда

circle

void far circle(int x,

int y,

int radius);

 

Вычерчивание окружности с центром (х, у)

cleardevice

void far cleardevice(void);

 

 

 

Очистка экрана цветом фона

 

 

clearviewport

void far clearviewport(void);

 

 

 

Очистка ранее установленного окна графического экрана

drawpoly

void far drawpoly(int numpoints,

int far

 

•polypoints);

 

 

 

 

Вычерчивание контура многоугольника с numpoints

 

вершинами

 

 

 

ellipse

void far ellipse(int x,

int y,

int stangle,

 

int endangle, int xradius, int yradius);

 

Вычерчивание дуги эллипса с центром (х, у)

fillellipse

void far fillellipse(int x, int y, int

 

xradius, int yradius);

 

 

 

 

Вычерчивание эллипса с центром в точке (х, у) и заполне-

 

ние его установленным ранее шаблоном закраски

fillpoly

void far fillpoly(int numpoints,

int far

•polypoints);

 

 

 

 

 

 

 

 

Вычерчивание закрашенного многругольника с

 

numpoints вершинами и заполнение его установленным

 

ранее шаблоном закраски

 

 

 

floodflU

void far floodfill(int x, int y,

int

border);

 

 

 

 

 

 

 

 

Заполнение установленным ранее шаблоном закраски

 

ограниченной области экрана, в которую попадает точка с

 

координатами (х, у)

 

 

 

line

void far line(int xl, int yl, int

x2, int

 

y2);

 

 

 

Вычерчивание линии от (xl, yl) до (х2, у2)

33"

514

Функция linerel

Язык Си++

Таблица П4.3 (продолжение)

Прототипикраткоеописаниедействий

void far linerel(in t dx, in t dy) ; Вычерчиваниелинии из текущей точки в точку, отстоящую от нее на величину (dx, dy)

lineto

void far

lineto(in t x, int y) ;

 

 

Проведениелинии из текущейточкив точку с абсолют-

 

 

ными координатами х, у

 

 

 

 

moverel

void far moverel(int dx,

in t dy) ;

 

Перемещениеуказателяпозицииизтекущейточкивточ-

 

 

ку, отстоящую от нее на величину (dx, dy)

 

moveto

void far moveto(int x, int y ) ;

 

 

 

Перемещение указателя позиции из текущей точки в точку

 

с абсолютными координатами х, у

 

 

 

outtext

void far outtext(char far •textstring);

Вывод текстовой строки textstring, начиная с текущей

 

 

позиции

 

 

 

 

 

outtextxy

void

far

outtextxy(int x,

int y,

char

far

*textstring);

 

 

 

 

 

 

 

 

 

 

Вывод текстовой строки textstring, начиная с точки с

 

координатами х, у

 

 

 

 

pieslice

void

far

pieslice(int x,

int

y,

int stangle,

int

endangle, int radius);

 

 

 

 

 

 

 

 

Вычерчивание закрашенного сектора круга с центром в

 

точке (х,у)

 

 

 

 

putimage

void far putimage(int left,

int

top,

void

far

*bitmap, int op);

 

 

 

 

 

 

 

 

 

 

Вывод ранее сохраненного графического изображения в

 

окно экрана с левым верхним углом (left, top)

putpixel

void far putpixel(int x,

int

y,

int color);

Вычерчивание точки по координатам х, у

 

 

 

rectangle

void far rectangle(int left,

int

top,

int

right,

int bottom);

 

 

 

 

 

 

 

 

 

Вычерчивание прямоугольника с заданными вершинами

Приложение 4. Графическая библиотека ВС++

515

Функция sector

ТаблицаП4.3(продолжение)

Прототип икраткоеописаниедействий

void far sector(int x, int y, int stangle, int endangle, int xradius, int уradius);

Вычерчивание сектора эллипса с центром в точке (х, у) и заполнение его установленным ранее шаблоном закраски

 

 

 

ТаблицаП4А

 

Функции для получения параметров изображения

Функция

 

Прототипикраткоеописаниедействий

detectgraph

void far

detectgraph(int far *graphdriver,

 

int

far

*graphmode);

 

Функциявозвращаеттипвашегографическогоадаптера

 

graphdriver и режим graphmode с разрешением, мак-

 

симальновозможнымдляданногоадаптера

getarccoords

void far getarccoords(struct arccoordstype

 

far

*arccoords);

 

Возвращает в структуре arccoords значения координат

 

дуги, построенной при последнем обращении к arc ()

getaspectratio

void

far

getaspectratio(int far +xasp, int

 

far

*yasp);

 

Возвращает коэффициент сжатия (yasp/xasp) по коор-

 

динатам хн у

getbkcolor

int

far

getbkcolor(void);

 

Возвращает номер текущего цвета фона,

getcolor

int

far

getcolor(void);

 

Возвращает номер текущего цвета изображения

getdefaultpalette struct palettetype *far getdefaultpalette(void);

Возвращаетуказательнаструктурутипаpalettype,содержащуюинформациюопалитре(наборецветов),устанавливаемой по умолчанию функцией initgraph ()

getdrivername char *far getdrivername(void);

Возвращает указатель на строку, содержащую название текущего графического драйвера

33*