Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Void main(void). Графические средства языка С




Графические средства языка С

Void main(void)

Void main(void)

Void main(void)

{

FILE *fptr;

char *str="Запись строки в файл \n";

fptr = fopen("text2.txt","w");

if (fptr==NULL)

{

printf("Ошибка\n");

exit(1);

}

fprintf(fptr,str);

fclose(fptr);

}

// Пример 7.6.

// В программе открыть текстовый файл и

// прочитать строку 0 0.5 0.8e-10 34568 -14

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

{

FILE *fptr;

clrscr();

fptr = fopen("text3.txt","r");

if (fptr==NULL)

{

printf("Ошибка при открывании файла");

exit(1);

}

int a,f;

float b,c;

long int d;

fscanf(fptr,"%d %f %g %ld %d",&a,&b,&c,&d,&f);

fclose(fptr);

printf("%3d %3.1f %g %5ld %3d\n",a,b,c,d,f);

getch();

}

// Пример 7.7.

// Записать в текстовый файл числа

// 0 10.5 1.8e-30 55555 -28

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

{

FILE *fptr;

clrscr();

fptr = fopen("text4.txt","w");

if (fptr==NULL)

{

printf("Ошибка");

exit(1);

}

fprintf(fptr,"%d %3.1f %g %ld %d \n", 0, 10.5, 1.8e-30, 55555, -28);

fclose(fptr);

}

 

Прототипы функций fgetc(), puts(), fprintf(), fscanf() см. в табл. П.7.

 

Возможны два режима работы монитора: символьный и графический. Управление экраном в графическом режиме производится с помощью набора функций, прототипы которых находятся в заголовочном файле GRAPHICS.H. Там же объявлены константы и макросы. Подключение осуществляется с помощью директивы препроцессора #include <graphics.h>.

Рассмотрим задачу: нарисовать на экране монитора две диагонали. Эта задача складывается из следующих подзадач: 1) инициализировать графический режим; 2) определить координаты углов; 3) провести линии из левого верхнего угла в правый нижний и из левого нижнего угла в правый верхний. Программа с подробными комментариями дана в примере 7.8.

 

// Пример 7.8.

// Нарисовать диагонали

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

{

int gdriver = DETECT, gmode, errorcode;

initgraph(&gdriver, &gmode, ""); // Инициализация графического режима

errorcode = graphresult();

if (errorcode!= grOk) // Проверка результата инициализации

{

printf("ЋОшибка %s\n", grapherrormsg(errorcode));

printf("„Для останова нажмите любую клавишу \n:");

exit(1); // Для выхода из программы, прототип в <stdlib.h>

}

int maxX, maxY;

maxX = getmaxx(); // Возвращает размер экрана по оси X

maxY = getmaxy(); // Возвращает размер экрана по оси Y

line(0,0,maxX,maxY); // Рисует первую диагональ

line(0,maxY, maxX,0); // Рисует вторую диагональ

getch(); // Ожидает ввода символа

closegraph(); // Закрывает графический режим

}

 

В начале программы описываются переменные gdriver, gmode и errorcode типа int, здесь же переменная gdriver инициализируется. Макрос DETECT соответствует автоматической установке режима наибольшего графического разрешения. Это позволяет переносить программы на другие компьютеры без изменения. Переменная gmode используется для установки видеорежима.

Функция initgraph(&gdriver, &gmode, “ “); служит для установки видеоадаптера (преобразователь двоичного кода в видеосигнал) в графический режим. Она считывает в память драйвер, соответствующий макросу DETECTЕ, устанавливает видеорежим по значению аргумента mode и определяет маршрут к директории, в которой находится драйвер egavga.bgi (лучше всего иметь этот драйвер в текущем каталоге). Ее прототип имеет вид:

 

void far initgraph(int far *driver, int far *mode, char far *path);

 

Здесь и далее far обозначает “дальний адрес”.

Функция graphresult() возвращает код ошибки, который присваивается переменной errorcode. При нормальной инициализации код ошибки равен нулю (макрос grOK соответствует сообщению No error). Если возникают ошибки (не найден драйвер, недостаточно памяти для загрузки драйвера и т.д.), то код не равен нулю.

Функция grapherrormsg() по коду ошибки возвращает соответствующее сообщение, которое с помощью функции printf() выводится на экран монитора. Функция getch() позволяет прочитать это сообщение. Выход из программы осуществляется по оператору exit().

Функции getmaxx() и getmaxy() возвращают в программу максимальные размеры экрана в направлении осей X и Y. Необходимо иметь в виду, что в графическом режиме за точку отсчета принимается левый верхний угол экрана, который имеет координаты (0,0) (все размеры и координаты в графическом режиме задаются в пикселах). Поэтому для привычного восприятия рисунка, необходимо выводить данные перевернутыми на 1800 относительно оси X.

Функция line() имеет прототип line(int x, int y, int x1, int y1). Она рисует линию из точки с координатами (x,y) в точку с координатами (x1,y1).

Функция closegraph() освобождает память, использующую графические функции.

В примере 7.9 используется еще ряд функций из графического модуля:

 

//Пример 7.9.

// Пример работы в графическом режиме

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>




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


Дата добавления: 2014-12-27; Просмотров: 397; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.