- •1. Введение
- •2. Модуль общего назначения syst.H
- •2.1. Общие сведения
- •2.2. Системные функции и макрооперации
- •2.3. Операции ввода/вывода
- •2.4. Математические функции
- •2.5. Специальные классы. Класс Spline для интерполяции данных сплайнами
- •3.2. Таблица связей, класс graph.
- •3. Представление графов, классы и граф-объекты
- •3.1. Представление графов
- •3.3. Матрицы смежности, класс matad.
- •3.4. Бинарные коды
- •3.5. Таблицы связей с весами вершин, класс graph_v
- •3.6. Таблицы связей с весами ребер, класс graph_r
- •3.7. Таблицы связей с весами вершин и ребер, класс graph_vr
- •3.8. Таблицы связей с координатами вершин, класс imgraph
- •3.9. Класс pinv
- •4. Форматы данных и преобразование форматов
- •4.1. Нумерация вершин графа
- •4.2. Представление графов
- •Int biclen(int n)
- •Int bic_graph(const graph& g, word* bic)
- •Int bic_mat(const matad& m, word* bic)
- •5. Функции создания графа
- •Imgraph::imgraph()
- •Imgraph::imgraph(const imgraph&)
- •6. Операции над графами и граф-объектами
- •Void add_edge(graph& g, int I, int k)
- •7. Ввод/вывод и преобразование файлов
- •Int write_r(file*)
- •Int read_r(file*)
- •Int gt_r(file* in, file* out)
- •Int cmp(const pinv& a, const pinv& b)
- •16. Примеры
- •Литература
- •Алфавитный указатель функций
2.2. Системные функции и макрооперации
void runtimer();
float timer();
Эта пара функций обслуживает таймер, который может использоваться для измерения промежутков времени. Процедура runtimer осуществляет сброс и пуск таймера. Функция timerвозвращает текущее значение таймера в секундах. Точность измерения времени определяется частотой прерываний, которые генерируются системным таймером компьютера. Получить значение этой частоты можно прочитав системную переменнуюCLK_TCK.
Пример:
#include <syst.h>
void main()
{ float t;
runtimer();
printr("Сделайте паузу и нажмите ENTER\n");
pause;
t=timer();
printf("timer = %5.2f sec \n",t);
}
void set_cpu_fr();
Процедура определения тактовой частоты процессора и установки значения системной переменной CPU_Frequency. По умолчанию значение CPU_Frequency равно 2600 Мгц. Время измерения 10 с, относительная погрешность измерения тактовой частоты равна 0.025% .
void runstimer();
unsigned long stimer();
Функции микросекундного таймера: процедура runstimer осуществляет сброс и пуск таймера, функцияstimerвозвращает текущее значение таймера в микросекундах. Для того, чтобы таймер давал правильные значения, в программе необходимо предусмотреть установку тактовой частоты применяемого процессора (глобальная переменная CPU_Frequency, частота записывается в МГц, значение по умолчанию равно 2600 МГц).
При использовании функций микросекундного таймера в программе должно быть записано определение
#define _STIMER_
разрешающее компиляцию функций runstimer и stimer .
char* rdate();
char* rtime();
Эта пара функций возвращает указатель на строку, которая представляет текущие дату и время в украинском формате и в компактной форме.
void swp(Type& a, Type& b);
Процедура парного обмена: переменные a,bменяются значениями.
int cmp(int nx, int ny, Type* x, Type* y);
Лексикографическое сравнение двух массивов, nx,ny- размеры сравниваемых массивов.
void errhalt(bool ex, char* mes);
void errhalt(bool ex, char* mes, FILE* f);
Простейшее средство обработки исключения: если ex==true, на экран или в файл выводится сообщениеmesи работа программы завершается. Например, если некоторая величинаxотрицательна, требуется завершить программу аварийно с выдачей сообщения "Величинаxотрицательна!". Соответствующий оператор будет иметь такой вид:
errhalt( x < 0, "Величина х отрицательна!");
Для записи текста сообщения можно использовать кириллицу.
char* about_syst();
Возвращает указатель на строку, которая содержит информацию о разработчике модуля syst.h.
2.3. Операции ввода/вывода
void flushkey();
Процедура выполняет гашение буфера клавиатуры.
char getkey();
Функция возвращает символ нажатой клавиши, нажатой после момента ее вызова.
char getskey();
При каждом вызове этой функции из буфера клавиатуры извлекается очередной символ, который и возвращается функцией. Если буфер пустой, функция ожидает нажатия клавиши. Функция используется для ввода символа нажатой клавиши с эхо-отображением. Пример:
#include <syst.h>
void main()
{ int i;
char x[5];
for (i=0;i<5;i++) x[i]=getskey(); // ввод символов с клавиатуры
printf("\n"); // с эхо-отображением
for (i=0;i<5;i++) printf("%c ",x[i]); // вывод символов на экран
printf("\n");
pause;
}
int getyes();
Функция ожидает нажатия одной из клавиш: <y>, <Y>, <n>, <N> . После нажатия клавиш <n> или <N>она возвращает 0, если нажата клавиша <y> или <Y> функция возвращает 1.
int getline(istream& in, string& s);
Извлекает очередную строку из потока inи размещает ее в полеs. При неуспешном чтении строки функция возвращает 0, при успешном - 1.
void rewind(ifstream& f);
Процедура устанавливает указатель потока fв начало.
ulong numstr(ifstream& fin);
Функция возвращает число строк текста в потоке fin.
FILE* rfopen(char* fn);
Функция открывает текстовый файл для чтения с контролем, возвращая указатель на открытый файл. При неудачном чтении выводится стандартное сообщение и работа программы завершается.
void binprint(Type x)
Процедура выводит двоичный код значения x на экран. Type - целочисленный тип.
Пример:
#include <syst.h>
void main()
{ ulong a;
printf("a= "); scanf("%lx",&a); // ввести число в 16-ричном формате
binprint(a); puts(""); // бинарный код выводится на экран
}
void biread(FILE* f, Type& x);
void biwrite(FILE* f, Type& x);
Процедура bireadвыполняет чтение объектаxиз бинарного файла, процедураbiwrite- запись в бинарный файл.
void printr(char* S, FILE* f=stdout);
Выводит на экран (по умолч.) или в файл fстрокуSс коррекцией символов кириллицы.
void temprint(Type& A);
Вывод на экран элементов структуры STLпо итератору.
void endline(FILE* f, char* text);
Эта процедура выводит в файл fинформационную строку, которая содержит такую информацию: значение параметраtext, имя соответствующегоcpp-файла, текущие дата и время. Такого рода строку удобно планировать в начале или в конце протокола вывода программы. Для вывода сообщения на экран, можно использовать имя стандартного устройства выводаstdout.
Пример:
#include <syst.h>
void main()
{ FILE* f= fopen("myfile.out","w");
endline(f,"Пинчук В.П."); // вывод инф.строки в файл myfile.out
endline(stdout," Пинчук В.П."); // вывод инф. строки на экран
fclose(f);
}
Программа выводит информационную строку следующего вида:
Пинчук В.П., 07.01.2004, 17:34, endline.cpp
