Графика Си модуль graphics.h — КиберПедия 

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Графика Си модуль graphics.h

2017-12-21 4626
Графика Си модуль graphics.h 5.00 из 5.00 3 оценки
Заказать работу

Часть 2

Графика Си модуль graphics.h

Монитор ПК может работать в двух режимах текстовый и графический. В этих режимах по разному представляется видео память. Переход из режима в режим очищает экран.

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

Типы видео мониторов и их режимы

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

Кроме того мониторы делятся по аппаратной реализации: ЦИФРОВЫЕ и АНАЛОГОВЫЕ.

Тип монитора Режим Разрешающая способность Кол-во цветов
CGA   HERCMONO EGA VGA CGAC0-2 CGAHI   EGALO VGAHI 320 X 200 640 X 200 720 X 347 640 X 200 640 X 480  

Остальные стандартные типы являются мало употребительными или повторяют более слабые режимы.

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

Инициализация графики

Функции:

initgraph(int *GrDr,int *GrMod,char *Path);

i=graphresult();

closegraph();

Функция initgraph(...) инициализирует графический режим. В пара­метрах ей передается:

GrDr - Тип графического монитора, или DETECT - Определить макси­мально возможный. Тип установленного оборудования возвращается в этих же переменных (поэтому они и передаются указателем).

GrMod - Режим.

Path - Путь до файлов *.bgi - драйверов графических режимов. Если указанно " " - то в текущем каталоге.

Значения и имена можно взять из предыдущей таблицы.

Функция graphresult() - возвращает код ошибки инициализации гра­фики (недопустимый графический режим, не найден файл *.bgi и т.п.). Если все в порядке функция возвращает значение grOk. Проверку правильного выполнения функции initgraph(...) обязательно надо производить, так как, если графический режим не установлен, выполнение любой графи­ческой команды приведет к аварийному останову программы.

Функция closegraph() обеспечивает корректное возвращение в текс­товый режим. Ее выполнение, как говорилось раньше, очищает экран. При необходимости вставляйте задержку до нажатия клавиши: getch().

Внимание!

Работа с графикой возможна только в моделях памяти >= medium, это устанавливается в опциях компилятора.

Для работы с библиотекой графики ее необходимо подключить. В опциях Си: Option\Linker\Libriry\Graphics: X

#include <graphics.h>

#include <conio.h>

#include <stdio.h>

int main(void)

{

int GrDr,GrMod,rez;

GrDr=DETECT;

initgraph(&GrDr,&GrMod," ");

rez=graphresult();

if(rez!= grOk)

{

printf("\n Ошибка инициализации графики"); return(0);

} /* Кон. if */

line(0,0,100,100);

getch();

closegraph();

return(1);

} /* Кон. main() */


Система координат

Система координат в графическом режиме начинается с точки 0,0. Размеры экрана зависят от установленного графического режима.

0,0 639,0 VGA,VGAHI 0,479

Основные графические функции

Ниже используются обозначения:

x,y,x1,y1,x2,y2 – координаты;

*St – строка символов;

rx,ry,r – радиусы;

h – толщина изображения;

Alfa1,Alfa2 – углы в градусах;

DX,DY – размеры символа;

Color – цвета.

Функции рисования

line(int x1,int y1,int x2,int y2) Линия

rectangle(int x1,int y1,int x2,int y2) Прямоугольник

bar(int x1,int y1,int x2,int y2) Закрашенный прямоугольник

bar3d(int x1,int y1,int x2,int y2,int h) Закр. прям. с оттененением

ellipse(int x,int y,int rx,int ry) Эллипс

fillellipse(int x,int y,int rx,int ry) Закрашенный эллипс

arc(int x,int y,int Alfa1,int Alf2,int r) Дуга (круг)

outtextxy(int x,int y,char *St) Вывод строки текста

putpixel(int x,int y,char Color) Поставить точку

Color=getpixel(int x,int y) Получить цвет точки

floodfill(int x,int y,char Color) Залить до границы указанного цвета

cleardevice() Очистить экран

clearviewport() Очистить порт вывода

setviewport(int x1,int int y1, Установить порт вывода

int x2,int y2,char flg) flg-вывод за пред. окна


Рисование графиков

Постановка задачи

Заданна функция float F(float x), необходимо на выбранном пользователем интервале построить ее график. Программа должна автоматически определять масштаб, содержать разметку, линейку для сканирования точек графика. Значения сканируемых точек должны писаться под графиком.

Этапы реализации

Программа реализуется в 4 этапа: Рисование разметки; Нахождение минимума и максимума функции; Оцифровка; Вывод графика; и Сканирование значений точек.

Рисование разметки

Для рисования разметки рекомендуется воспользоваться стилем линий DOTTED_LINE. После завершения рисования, не забудьте вернуться к стилю SOLID_LINE. Рисовать удобнее функцией line(...) выводимой в цикле.


Программа вывода графиков


Оцифровка

Для вывода цифр около линий разметки необходимо использовать функцию outtextxy(...), но предварительно число необходимо записать в строку, т.к. outtextxy(...) работает только со строками. Для этого удобнее всего пользоваться функцией sprintf(<Строка>,<"Текст, метки форматов",[<Переменные>]>). Эта функция аналогична printf(...), но вывод происходит не на экран, а в строку.

Пример:

char st[80];

.....

sprintf(st,"x=%f, F(x)=%f",x,F(x));

outtextxy(100,100,st);

При выводе на экран, необходимо помнить что координаты переданные в функцию outtextxy(...), относятся к левому верхнему углу строки. Чтобы строка была напротив (под) линей разметки, ее необходимо сдвинуть. Полезно учесть размер символа (функции textwidth(...) и textheight(..).


Вывод графика

Для вывода графика рекомендуется ввести целые переменные: x1,y1,x2,y2 - координаты точек, WX1,WY1,WX2,WY2 - координаты окна вывода. Алгоритм рисования графика следующий.

 

 

 

Сложность заключается только в пересчете вертикальных координат. Обычно они направленны снизу вверх, а у машины наоборот.

Сканирование значений точек

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

Новое: Изображение линии, с последующим восстановлением изображе­ного под ней. Это рекомендуется реализовать используя режим инверсии экрана. В Си существует несколько способов рисования линий и прямоу­гольников. Первый режим COPY_PUT, указанные объекты рисуются цветом установленным в setcolor(...). Другие режимы позволяют рисовать комби­нацией текущего цвета и цвета точек находящихся под рисунком. Удобнее всего использовать режим XOR_PUT. Повторно проведя линию того же цвета, возвращаемся к исходным цветам XOR(XOR(X))==X.

Установку режима осуществляет функция setwritemode(<Режим>). Ус­тановленный режим действует до установки нового. По умолчанию используется режим COPY_PUT.


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

void PutLine(int x,int y1,int y2)

{

setwritemode(XOR_PUT);

setcolor(RED); /* Инверсия др. цветом даст др. резулт. */

/* Линия будет рисоваться не цветом RED */

line(x,y1,x,y2); /* Линия вертикальная x1=x2=x */

setwritemode(COPY_PUT); /* Иначе и все остальное будет с инверсией цветов. */

} /* Кон. PutLine() */

Работа со спрайтами

Спрайт - фрагмент видео памяти (прямоугольное изображение). Биб­лиотека Си содержит функции getimage(...) и putimage(...) позволяющие запоминать фрагменты экрана в памяти и выводить их в указанное место.

Функция getimage(int x1,int y1,int x2,int y2,void far *Buf)

x1,y1,x2,y2 - Размеры запоминаемой области,

Buf - Адрес выделенного буфера для запоминания изображения.

Функция putimage(int x,int y,void far *Buf,<Режим>)

x,y - Куда выводить изображение, левый верхний угол.

Buf - Адрес буфера где хранится изображение.

<Режим> - Режим вывода. COPY_PUT

В месте с этими функциями используются функции работы с памятью: выделения malloc(), farmalloc() (calloc(),farcalloc()), освобождения free(),farfree()

Обычно удобнее использовать память за пределами рабочего сегмента данных, по этому чаще используются farmalloc() и farfree(). Выделенную в программе память обязательно надо освобождать в конце работы программы. Иначе с каждым запуском программы у компьютера будет оставаться все меньше ресурсов, и в конце концов их не хватит для нормальной работы. Если попытка выделения памяти закончилась неудачно, то функции возвращают значение NULL. Если Вы хотите чтобы Ваша программа работала без сбоев, обязательно проверяйте успешность операции выделения памяти. За один вызов невозможно выделить более 64 кило байт.

Функции работы с памятью описаны в модуле alloc.h

Функция farmalloc(<Размер>)

Функция farfree(<Адрес буфера>)

Для правильного выделения памяти необходимо знать сколько ее нуж­но для выбранного фрагмента экрана. Это делает функция imagesize(...).

Функция imagesize(int x1,int y1,int x2,int y2) x1,y1,x2,y2 - Координаты выбранной области. Функция возвращает размер в байтах.

Внимание!!! Размеры запоминаемой картинки должны совпадать с раз­мером выделенного буфера!

Пример вывода картинки

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <alloc.h>

int main(void)

{

int GrDr, GrMod, Rez;

long size; /* Переменная для хранения размера запоминаемой картинки */

void far *Buf; /* Указатель на начало буфера изображения */

GrDr=DETECT;

initgraph(&GrDr, &GrMod, " ");

Rez = graphresult();

if(Rez!= grOk)

{

printf("\n Ошибка инициализации памяти"); return(0);

} /* Кон. if */

circle(20,20,5); /* Рисование объекта который будет запомнен */

size=imagesize(10,10,30,30); /* Опред. требуемого объема памяти */

Buf=farmalloc(size); /* Выделение требуемой памяти */

if(Buf==NULL)

{ /* Проверка, что выделение прошло успешно */

printf("\n Ошибка выделения памяти.");

getch();

closegraph();

return(0);

} /* Кон. if */

getimage(10,10,30,30,Buf); /* Запоминание фрагмента экрана */

getch();

putimage(100,100,Buf,COPY_PUT); /* Вывод в другое место */

getch();

farfree(Buf); /* Освобождение памяти */

closegraph();

return(1);

} /* Кон. main() */


Программа “летающая тарелка”


Компьютерная анимация

Для организации анимации используются несколько фаз движения объекта. Каждый рисунок целесообразно пометить в свою функцию, в качестве параметров в нее передается точка с которой надо рисовать и направление рисунка по оси Х. Все функции удобнее объединить в одну функцию рисования:

 

void Ris(int *faza,int x,int y,int napr)

{

switch (*faza)

{

case 1:Ris1(x,y,napr); break;

case 2:Ris2(x,y,napr); break;

...

} /* Кон. switch */

(*faza)++

if(*faza>MAX_FAZA) *faza=0;

} /* Кон. Ris() */

 

Каждая функция начинает с очистки места для рисунка. Все коорди­наты в функциях рисования отсчитываются от точки x,y и умножаются на направление; 1 (направо) и -1 (налево). Этим же параметром при необ­ходимости можно менять и масштаб изображения.

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

Винтовая лестница

Программа должна имитировать вид возникающий при подъеме по вин­товой лестнице. Необходимо изобразить четверть круга ступенек. Коорди­наты вычисляются через функции sin(...) и cos(...). Скорость можно значительно поднять если не вычислять их каждый раз заново, а запомнить в массиве. Причем достаточно помнить таблицу только одной функции, на интервале [0..pi/2]. Другую всегда можно получить sin(x)=cos(pi-x).

           
   
 
   
 
 



Программа Винтовая лестница

Часть 3. Основные алгоритмы

Поиск и сортировка

Поиск

Методы поиска делятся на линейные и бинарные. Пример алгоритма линейного поиска приведен выше (просматриваются все значения).

Алгоритмы бинарного поиска применяются для поиска в отсортирован­ном массиве. Массив делится пополам и проверяется в какой половине на­ходится нужное значение. Деление повторяется до нахождения искомого элемента.

Сортировка

Сортировка - процесс перегруппировки элементов в заданном поряд­ке. Цель сортировки - облегчить последующий поиск элементов. Алгоритмы сортировки делятся на два класса:

- Сортировка массивов (внутренняя).

- Сортировка файлов (внешняя).

Рассматривается только первый класс методов. Они делятся на несколько групп. Прямые методы более простые и очевидные. Быстрые ме­тоды позволяют повысить скорость за счет значительного усложнения ал­горитмов.

Во всех алгоритмах используются обозначения: a[] - сортируемый массив целых чисел, N - длинна массива.

Быстрые методы сортировок

Сортировка Шейлла, алгоритм основан на комбинациях сортировок: частей массива и целиком.

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

Сравнение методов

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

Программа анализа файла

#include <stdio.h>

#include <conio.h>

int main(void)

{

char name1[20],ch; /* Имя обрабатываемого файла */

FILE *File1; /* Указатель на файл */

unsigned int nc[256],i,n; /* nc - счетчик вхождений символов */

printf("\n Введите имя исходного файла: ");

scanf("%s",name1);

File1=fopen(name1, "rt");

if(File1==NULL)

{

printf("\n Открыть указанный файл невозможно."); return(1);

} /* Кон. if(ошибка открытия файла) */

for(i=0;i<256;i++) nc[i]=0; /* Обнуление счетчика */

while(!feof(File1))

{

fscanf(File1,"%1c",&ch);

nc[ch]++;

} /* Кон. while() просмотр файла */

fclose(File1);

n=0;

for(i=0;i<256;i++) if(nc[i]==0) n++; /* Подсчет числа неиспользуемых символов */

printf("\n В файле содержатся:");

for(i=1;i<256;i++)

{

printf("\n Символ: %c (%3d) содержимся %5d раз.",i,i,nc[i]);

if((i%20)==0) getch(); /* Задержка после вывода страницы */

} /* Кон. for() */

printf("\n В файле ни разу не использовались %d символов.",n);

return(1);

} /* Кон. main() */


Упаковщик файлов

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

В предлагаемой программе предлагается записывать два символа в один, это возможно если число используемых символов в тексте не превышает 32, только заглавные или строчные буквы. Иначе программа должно вывеси сообщение о невозможности сжать файл.

Позиционирование по файлу

Позиционирование по файлу осуществляет функция: fseek(*<Файл>, <Смещение>, <Откуда>) <Откуда> - одно из

SEEK_SET начало файла

SEEK_CUR - текущая позиция.

SEEK_END - конец файла.

*<Файл> - Указатель на файл полученный из open().


Двоичный сдвиг

<Переменная или число> >> <Количество разрядов>

<Переменная или число> << <Количество разрядов>

Операция выполняет двоичный сдвиг числа на указанное число разрядов, так как числа представляются в двоичной системе счисления, сдвиг на 1 разряд эквивалентен делению или умножению на 2.

Операция допустима только над типами int, long, char.

Поиск файлов

Поиск файлов осуществляют функции findfirst() и findnext(). Они описаны в модуле dir.h.

done = findfirst(<Шаблон поиска>,&ffblk,<Атрибуты>)

done = findnext(&ffblk)

Информация о найденном файле помещается в структуру ffblk.

Функции возвращают значение int done. Если поиск окончился успешно, то done=1, если указанных файлов больше найти не удалось, то done=0. Пример:

#include <stdio.h>

#include <dir.h>

int main(void)

{

struct ffblk ffblk; /* Информация о файлах */

int done; /* Результат поиска */

printf("\n Содержимое каталога:");

done = findfirst("*.*",&ffblk,0);

while (!done)

{

printf("\n %s", ffblk.ff_name);

done = findnext(&ffblk);

} /* Кон. while */

return(0);

} /* Кон. main() */


Часть 4

Метод деления пополам

Метод основан на последовательном приближении к решению. Используются обозначения: FA=f(A), FB=f(B), FC=f(C).

1 -Выбирается отрезок на котором решение существует (FA>0)&&(FB<0) или (FA<0)&&(FB>0). Иначе решения нет.

2 - Отрезок [A B] делится пополам, получаем точку С.

3 - Проверяем является ли точка С решением с выбранной точностью (fabs(FC)<Точность). Если да, то решение найдено.

4 - Если знак FB совпадает с FA, как на рис., то принимаем за новое значение точки В точку С. Соответственно FB=FC. Возвращаемся к пп 2.

5 - Иначе перемещаем правую границу, те точка А. A=C, FA=FC. Переход к пп 2.

За каждый проход этого алгоритма отрезок, на котором находится решение, сжимается в два раза, постепенно локализуя решение.

Метод секущих

Метод очень похож на предыдущий, иначе определяется только точка С. Можно предположить, что решение ближе к тому краю отрезка, где значение функции меньше. Проводим прямую линию [FA FB], и из двух подобных тре­угольников находим точку С. (|FA|/|FB|= (C-A)/(B-C). В остальном алго­ритм аналогичен предыдущему.


Метод Ньютона

На практике часто встречаются уравнения, для которых нельзя ука­зать интервал (А-В) на котором находится решение. В током случае обыч­но используют метод Ньютона.

Из точки F проводится касательная к графику F(x), точка пересече­ния ее с осью x дает новое приближение решения X*. Это повторяется по­ка:

|F(x)| > <Точности решения>.

Угол наклона касательной можно найти через центральные разности:

При использовании данного метода необходимо учитывать возможность зацикливания и отсутствия решения. Эти случаи представленны ниже. Для того чтобы избежать эти ситуации рекомендуется ввести переменную int n_iter и увеличивать ее на каждой итерации n_iter++. Если она превышает устновленный придел, то возможно решения нет.

       
   
 

Решение систем нелинейных уравнений

На практике задача отыскания решения системы уравнений встречает­ся чаще, чем решение уравнения с одним неизвестным. Рассмотрим для примера систему:

x1' + 10*(x1 - x2)= 0

x2' + x1 * x3 -28*x1 +x2 = 0 или в векторной форме F(X)=0

x3' - x1 * x2 +2.6*x3= 0

Прямое решение такой системы невозможно. Единственный путь итерационные методы.

1.Выбирается некоторое приближение к решению (начальные значения)

2.Массиву предыдущих значений X присваиваем текущие значения X.

3.Вычисляется функция Якоби:

Эта функция является линеаризацией (упрощением) исходной системы уравнений в окрестностях точек x1,x2,x3

4. Считаем

F(X(n+1))=F(X(n)) + F'(X(n)) * (X(n+1)-X(n)) = 0

Или

F'(X(n)) * D X(n+1) = - F(X(n))

Решая эту систему относительно D X(n+1), получаем:

X(n+1) = X(n) + D X(n+1)

5. Полученные точки x1,x2,x3 подставляем в исходную систему уравне­ний. И если S | Fi(X) | <= Заданной точности, то решение найдено, ина­че возвращаемся к пп. 3.

6. Если количество итераций затраченных на нахождение решения больше уста­новленного предела, то решение не найдено, прерываем расчет.

7. Выводим или сохраняем рассчитанные точки, увеличиваем счетчик вре­мени. Если необходимо продолжать расчет, то возвращаемся к пп. 2.


Рекомендуется использовать:

float X[4]; Значения независимых переменных *

float OldX[4]; Значения переменных на предыдущем шаге *

float rX[4]; Рабочий массив

float H; Шаг интегрирования *

float dt; Шаг дифференцирования *

float EPS; Ошибка вычислений

float MaxEPS=0.05; Максимально допустимая ошибка вычислений

int N_ITER; Счетчик количества итераций

int MaxITER=10; Максимально допустимое количество итераций

float A[4][4]; Значения Якобиана

float B[4]; Значения функции

float T; Текущее время

float MaxT; Общее время расчета

float G1[500],

G2[500],G3[500]; Точки для графиков функции

float dX(int n)

{

return((X[n]-OldX[n])/H);

} /* Кон. dX() - Функция для вычисления производной n-ой перем. */

float F(int n)

{

float r;

switch(n)

{

case 0:r=dX(0)+10*(X[0]-X[1]); break;

case 1:r=dX(1)+X[0]*X[2]-28*X[0]+X[1]; break;

case 2:r=dX(2)+X[0]*X[1]+2.6*X[2]; break;

default:printf("\n Недопустимое значение функции %d",n);

} /* Кон. switch() */

} /* Кон. F() - Функция описания модели */

* - Рекомендуется описать как глобальные переменные.

 


Требования к курсовой работе

Курсовая работа выполняется по индивидуальным (на бригаду) зада­ниям. Тема задания согласованная с преподавателем. Срок выполнения один семестр. Кроме оговоренных вариантов, режим работы программы гра­фический.

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

Прикладные программы

1. Оконная библиотека.

2. Редактор строки (режимы Inset, Delete, клавиши управления кур­сором, маска допустимых значений).

3. Программа графического меню. Горизонтальное, вертикальное, вы­падающие подменю, выбор по функциональным клавишам.

4. Вывод на экран PCX картинки.

5. Калькулятор.

6. Интерпретатор простейшего языка программирования.

7. Простая издательская система.

8. Графический редактор.

9. Архиватор.

10. Простой вариант рограмы Norton Commander

Учебные программы

1. Имитация колонии жизни.

2. Имитация машины Поста.


Игровые программы

1, Игра шарики.

2. Лабиринт.

3. Морской бой.

4. Popcorn или подобное.

5. Игра в стиле prince.

6. Пинбол.

7. Сражение в космосе (starcon или mach3).

8. Война роботов.

9. Тактические игры.

10. Игра на бирже.

11. Тесты памяти.

12. Музыкальный редактор.

13. Домино.

14. Тетрис


Литература

Использование ПК.

1. В.Э. Фигурнов. IBM PC для пользователей. (любое издание).

Язык программирования

1. С.О. Бочков, Д.М. Субботин.

Язык программирования Си для персонального компьютера.

М. СП: "Диалог" "Радио и связь", 1990 г.

2. М.А. Аксёнкин, О.Н. Целобёнок.

Язык С. Минск: "Уyiверсiтэцкае", 1995 г.

3. Справочник по функциям Borland C++ 3.1/4.0

Киев: "Диалектика" 1994 г.

4. Прокофьев Б.П. и др. Графические средства Turbo C и Turbo C++.

Москва: "Финансы и статистика", 1992 г.

5. Страуструп Б. Язык программирования Си++.

Москва: "Радио и связь", 1991 г.

Теория программирования

1. Ален И. Голуб. C & C++ правила программирования.

М.: Бином, 1996г.

Вычислительная математика

1. Амосов А.А. Дубинский Ю.А. Копченова Н.В.

Вычислительные методы для инженеров. М.: Высшая школа, 1994 г.

Основные алгоритмы

1. Вирт Н. Алгоритмы + структура данных = программа.

М.: Мир, 1985 г.

2. Вирт Н. Алгоритмы и структуры данных. М.: Мир, 1989 г.
Оглавление

    План занятий
  стр. 1 год 2 года
Графика Си. Модуль graphics.h      
Типы видеомониторов и их режимы      
Инициализация графики      
Система координат      
Основные графические функции      
Блок схема графической программы      
Рисование графиков      
Программа вывода графиков   21-24 33-35
Работа со спрайтами      
Пример вывода картинки      
Программа «летающая тарелка»      
Компьютерная анимация   - 38-39
Программа движения объекта (человек)   -  
Программа движения винтовой лестницы   -  
Демонстрационная программа количества видео страниц   -  
Винтовая лестница     40-42
Нахождение минимума и максимума функции   -  
Поиск   -  
Сортировка   28-31 44-46
Сжатие информации и кодирование      
Программа анализа файла   -  
Упаковщик файлов   - 48-50
Позиционирование по файлу   -  
Двоичный сдвиг   -  
Улучшения программы упаковки   -  
Поиск файлов   -  
Решение системы линейных уравнений   -  
Решение нелинейных уравнений      
Метод деления пополам      
Метод секущих      
Метод Ньютона   -  
Решение систем нелинейных уравнений   -  
Блок схема программы расчета НСУ с выводом результатов в форме графиков   - 56-72
Варианты курсовых работ   - 56-72
Литература      

 

Часть 2

Графика Си модуль graphics.h

Монитор ПК может работать в двух режимах текстовый и графический. В этих режимах по разному представляется видео память. Переход из режима в режим очищает экран.

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


Поделиться с друзьями:

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

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.011 с.