Обеспечивается функциями модуля <graphics.h> которые реализуют Borland Graphics Interface (BGI).
Для подключения библиотеки необходимо установить опцию с помощью меню
options → linker → liblaries → graphics library
void for initgraph (int far *graphdrive, int far *graphmode, char far *path); — инициализирует графический режим определенный двумя первыми параметрами
graphdrive — собственный режим (по умолчанию graphdrive = DETECT)
graphmode —
режим VGA с одной страницы видео памяти и разрешением 640х480 pixels.
Для постраничного режима необходимо задать следующие значения параметров
graphdrive = VGA //9;
graphmode = VGAMED //1;
path —строка задающая путь к файлу egavga.bgi (графический драйвер)
Драйверы при стандартной установке системы находится в папке bgi после выззова функции экран очищается, невидимый курсор помещается в верхний левый угол экрана с координатами 0:0.
// рисуем дугу окружности в центре x, y, с радиусом r, началом и концом
void arc(int x, int y, int stangle, int endangle, int r)
// рисует окружность
void circle (int x, int y, int r)
// рисует закрашенный сектор круга
void pieclise (int x, int y, int stangle, int endangle, int r)
// рисует дугу элипса
void ellipse (int x, int y, int stangle, int endangle, int xradius, int yradius)
// рисует закрашенным элипсом
void fillellipse (int x, int y, int xradius, int yradius)
// рисует закрашенный сектор элипса
void sector (int x, int y, int stangle, int endangle, int xradius, int yradius)
// рисует прямоугольник по левому-верхнему и нижнему-правому углу
void rectangle (int x1, int y1, int x2, int y2)
//закрашенный прямоугольник
void bar (int x1, int y1, int x2, int y2)
// закрашенный параллелепипед (depth — глубина, topflag — определяет какая из из трехмерных вершин рисуется)
void bar3d (int x1, int y1, int x2, int y2, int depth, int topflag)
// контур многоугольника, n — кол-во вершин+1, points — координаты точек (одномерный массив последовательно x, y, чтобы многоугольник получился замкнутым необходимо передать координаты n+1 вершины, повторив в конце массива координаты первой вершины).
void drawpoly (int n, int * points)
// закрашенный многоугольник
void fillpoly (int n, int * points)
// закрашивает пиксель
void putpixel (int x, int y, int color)
// рисует линию
void line (int x1, int y1, int x2, int y2)
// линию от данной точки
void lineto (int x, int y)
// линию от данной точки до точки определенной смещением по x и y
void linerel (int dx, int de)
// перемещает курсор в точку
void moveto (int x, int y)
// смещает курсор
void moverel (int dx, int dy)
// возвращает текущую позицию курсора
int getx(), int gety()
// устанавливает цвет рисования (от 0 — черный до 16 — белый или цветовые константы)
void setcolor (int color)
// цвет фона
void setbkcolor (int color)
// стиль линии (2 параметр — шаблон в битовой матрицы, если первый параметр определяет стиль линии как пользовательский, 3 параметр — толщина)
void setlinestyle (int linestyle, unsigned upattern, int thickness)
// стиль и цвет заполнения закрашенных фигур (стли от 0 до 11, 12 — пользовательский, задать который можно с помощью битовой матрицы функцией)
void setfillstyle (int pattern, int color)
// битовая матрица ...
void setfillpattern (char * upattern, int color)
// выводит строку текста в текущую позицию
void outtext (const shat * str)
// выводит строку текста в заданной позиции
void outtextxy (int x, int y, char * str)
// устанавливает стиль символов (1 — шрифт (русские только в 0), 2 — направление вывода текста (0 — горизонталь, 1 — вертикаль), 3 — размер символов)
void settextstyle (int font, int direction, int charsize)
// полином определяет доступность экрана вне окна, clipon = 0 — область вне окна доступна, иначе нет
void setviewport (int x1, int y1, int x2, int y2, int clipon)
// очищает окно, заполняя его цветом фона, перемещает в верхний левый угол окна
void clearviewport ()
// очищает экран, заполняя его цветом фона, перемещает в верхний левый угол окна
void cleardevice ()
// закрывает графику
void closegraph ()
// устанавливает активную страницу видео памяти (страницы нумеруются с 0)
void setactivepage (int numpage)
// отображает страницу на экране
void setvisualpage (int numpage)
// коэффициент сжатия
void setaspectratio (int *xasp, int *yasp)
// сохраняет в памяти битовый образ прямоугольной части экрана
void getimage (int x1, int y1, int x2, int y2, void *bitmap)
// выводит битовый образ сохраненный ранее на экран, op — определяет способ вывода изображения
void putimage (int x, int ym void *bitmap, int op)
Задача «Ханойская башня»
#include <stdio.h>
Void honoy (int k, int I,int j);
{
If(k)
{
Hanoy(k-1,I,6-i-j);
Printf(“Диск %d-й со шпиля %d на шпиль %d”,k,I,j);
}
}
Void main()
{
Int n;
Printf(“\n Укажите количество дисков”);
Scanf(“%d”,&n);
Hanoy(n,1,2);
}
Сортировка вставками основана на вставке очередного элемента последовательности, при условии что предыдущая часть упорядочена.
Деревья — это конечное множество узлов, из которых один является корнем, а остальные содержатся в n попарно не пересекающихся подмножества, каждое из которых в свою очередь является деревом. M -арное дерево предполагает наличие у каждой вершины не более m деревьев
Бинарное дерево — это дерево, у каждой вершины которой может быть не более двух поддеревьев. Бинарным деревом может быть представлено арифметическое выражение
Бинарное дерево может быть использовано для представления данных если их объем может существенно изменяться в зависимости от ситуации, а данные необходимо представить в некотором порядке. В этом случае бинарное дерево может выстраиваться в соотвтетствиис выбраным порядком его обхода в дальнейшем. Различают три вида порядка обхода дерева
1. Инфиксный: левое поддерево — корень — правое поддерево
2. Префиксный: корень — левое поддерево — правое поддерево
3. Суффиксный: левое поддерево — правое поддерево — корень
Бинарное дерево в программе выстраивается динамически, причем каждая вершина дерева кроме данных содержит в себе ссылки на два своих поддерева, поэтому вершина в программе всегда представляет собой структуру. Дерево
Для упорядочивания данных с помощью дерева обычно используется инфиксный порядок обхода. В этом случае левое поддерево каждой вершины содержит значение меньшего корня, правое, большее, либо равное корню. В этом случае обход дерева в инфиксном виде позволит вывести данный в упорядоченном порядке,а поиск данных в дереве по эффективности будет равнозначен бинарному поиску, в случае если дерево достаточно сбалансировано.Дерево называется сбалансированным если поддеревья каждой вершины имеют одинаковую высоту.
Дерево называется вырожденным, если у каждой вершины есть только левое или только правое поддерево. Вырожденные деревья получаются только если они строятся по упорядоченным данным
[1] Специальной участок памяти, предназначенный для работы с функциями.