Технология сборки библиотеки

 

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

Заголовочный файл (иногда головной файл, англ. header file), или подключаемый файл, в языках программирования С и C++ - это файл с расширением .h. Заголовочный файл в общем случае может содержать любые конструкции языка программирования, но на практике в него помещают объявления идентификаторов, которые должны быть объявлены более чем в одном файле вашей программы, объявления структур, прототипы функций, перечисления, макросы препроцессора. Основная цель использования заголовочных файлов — вынесение описания нестандартных типов и функций за пределы основного файла с кодом. Заголовочный файл используется путём включения его текста в использующий его файл директивой препроцессора #include. Чтобы избежать повторного включения одного и того же кода, используются директивы #ifndef, #define, #endif.

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

Пусть создаваемая нами библиотека состоит из заголовочного файла mylib.h и файла mylib.cpp.

В заголовочном файле mylib.h содержатся прототипы функций, которые описаны в данном параграфе.

Перечислим все эти функции:

· maximum(). Находит и возвращает наибольшее из двух чисел.

· Form_matrix(). Заполняет матрицу, адрес которой передается ей в качестве параметра, случайными числами.

· ST(). Возводит любое число в степень n.

· Z(). Меняет значение переданного ей параметра на случайное число.

· Sum(). Вычисляет среднее арифметическое вектора, адрес и размер которого передаются в качестве параметров.

· Product(). Вычисляет произведение двух матриц, адреса и размеры которых передаются в качестве параметров. Возвращает матрицу соответствующего размера.

· SM().Безтиповая функция вычисляет симметричную матрицу из исходной матрицы.

· PK(). Безтиповая функция переводит декартовые координаты точки в полярные.

· CP().Типизированная функция для подсчета количества положительных элементов в любой матрице.

· Mod_Otk(). Типизированная функция находит максимальный компонент и среднее значение в любом массиве.

· fact().Рекурсивная функция вычисляет факториал числа n.

 

Текст файла mylib.h:

#ifndef MYLIB_H // если MYLIB_H еще не определили, то определяем

#define MYLIB_H

const nmax = 50; // максимальная размерность матрицы

int maximum(int a, int b);//прототип функции maximum

void Form_matrix(int A[][M], int m, int n);/*прототип функции Form_matrix */

float ST(float x, int n);//прототип функции ST

void Z (int у);//прототип функции Z

void Z (int *у);//прототип функции Z

int Sum ( int A[], int N ); //прототип функции Sum

void product(int А[][nmax], int В[][nmax],int С[][nmax], int m, int n, int k);//прототип функции product

void SM(float Y[4][4], int n, float X[4][4]);/*прототип функции SM */

void PK(float a, float b, float *ro, float *fi);/*прототип функции PK */

int CP(float D[7][7], int m, int n);//прототип функции CP

float Mod_Otk(float *a, int n);//прототип функции Mod_Otk

float fact(int N);//прототип функции fact

#endif /* MYLIB_H */

 

Файл mylib.cpp является созданной нами библиотекой, в которой содержатся реализации всех перечисленных выше функций.

В целях экономии текст файла mylib.cppприведем не полностью.

Текст файла mylib.cpp:

#include "stdafx.h"

#include "stdlib.h"

{

int Sum ( int A[], int N )//заголовок функции Sum

{

int i, sum;//локальные переменные

sum = 0;

for ( i = 0; i < N; i ++ )

sum += A[i];

return sum/N;//возвращаемое значение

}

void product(int А[][nmax], int В[][nmax],int С[][nmax], int m, int n, int k)//заголовок функции product

{
/* m - число строк в матрице А;
n - число строк в матрице В и число столбцов в матрице А;
k - число столбцов в матрице В. */

for (int i=0; i< m; i++)
for (int j=0; j< k; j++)

{
С[i][j]=0;
for (int l=0; l< n; l++)

С[i][j] + = А[i][l]*В[l][j];
}
}

float fact(int N)//рекурсивная функция вычисления факториала числа N

{

if (N==0)








Дата добавления: 2015-02-10; просмотров: 710;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.