Пример получения данных из библиотеки

Лабораторная работа N 6

по дисциплине "Теория и технология программирования"

на тему: "Методы сортировки"

 

Цель работы.

Цель задания - изучить методы сортировки данных.

 

Задание.

Составить программу для сортировки массива данных методами: пузырьковой, отбора, вставки, Шелла и быстрой сортировки. Вывести на экран неупорядоченные и упорядоченные (для каждого из методов) массивы данных, число сравнений и перестановок переменных в каждом методе сортировки. Составить сравнительную таблицу эффективности методов.

таблица 1.

Индивидуальные варианты

№п/п Дана матрица A[ M,N ]
Упорядочить каждую строку матрицы по убыванию
Упорядочить каждую четную строку по возрастанию, каждый нечетный столбец по возрастанию абсолютных величин.
Упорядочить каждый столбец матрицы по убыванию абсолютных величин
Упорядочить каждую нечетную строку по возрастанию абсолютных величин, каждый четный столбец по возрастанию.
Упорядочить каждую строку матрицы по возрастанию абсолютных величин
Упорядочить каждую строку матрицы по убыванию суммы значений цифр элементов матрицы
Упорядочить каждый столбец матрицы по возрастанию суммы значений цифр элементов матрицы
Упорядочить каждую строку матрицы по убыванию абсолютных величин
Упорядочить диагональные элементы матрицы по возрастанию.
Упорядочить каждый столбец матрицы по возрастанию
Упорядочить все нечетные элементы строк по возрастанию.
Упорядочить все четные элементы столбцов по убыванию.
Упорядочить каждый столбец матрицы по возрастанию абсолютных величин
Упорядочить каждую четную строку по возрастанию, каждый четный столбец по возрастанию.
Упорядочить каждую строку матрицы по возрастанию
Упорядочить каждую нечетную строку матрицы по возрастанию суммы значений цифр элементов матрицы
Упорядочить каждый столбец матрицы по убыванию
Упорядочить каждый четный столбец матрицы по убыванию суммы значений цифр элементов матрицы.
Упорядочить каждую строку матрицы по возрастанию отрицательных величин
Упорядочить каждую строку по возрастанию, каждый столбец по убыванию.
Упорядочить каждую строку матрицы по возрастанию четных чисел.
Упорядочить каждый четный столбец по убыванию, каждую строку по убыванию.

Отчет.

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

Лабораторная работа N 7

по дисциплине "Теория и технология программирования"

на тему: "Методы поиска"

 

Цель работы.

Цель задания - освоить методы поиска.

 

Задание.

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

таблица 1.

Индивидуальные варианты

№п/п Дана матрица A[ M,N ]
Произвести поиск элемента (последовательности элементов) по строкам матрицы.
Произвести поиск элемента (последовательности элементов) по четным строкам и нечетным столбцам матрицы.
Дан текст. Посчитать количество деепричастий и вводных слов и обращений в тексте, находящихся в середине предложений.
Произвести поиск элемента (последовательности элементов) по нечетным строкам и нечетным столбцам матрицы.
Произвести поиск элемента (последовательности элементов) по столбцам матрицы.
Произвести поиск элемента (последовательности элементов) по нечетным строкам матрицы.
Произвести поиск элемента (последовательности элементов) по четным столбцам матрицы.
Дано слово. Произвести поиск всех слов в тексте, содержащих возможные перестановки букв в слове.
Произвести поиск элемента (последовательности элементов) по четным столбцам и четным строкам матрицы.
Вывести количество совпадений первого элемента матрицы с остальными.
Дан текст. Посчитать количество гласных и согласных букв.
Дана буква. Найти все слова в тексте, которые начинаются с этой буквы.
Дан текст. Найти все слова, удовлетворяющие заданному шаблону (длина слова, совпадение 2-х заданных букв в слове (задача о кроссвордах)).
Дан текст. Дано слово. Найти количество совпадений первой буквы слова с последней буквой слов в тексте первых двух букв слова с двумя последними буквами слова, первых трех и первых четырех с последними тремя и четырьмя.
Дан текст. Дано слово. Найти количество совпадений первой буквы слова с первыми буквами слов в тексте первых двух букв слова с первыми двумя, первых трех и первых четырех.
Произвести поиск элемента (последовательности элементов) по диагональным элементам матрицы.
Дан текст. Посчитать количество заданных букв.
Дан текст. Найти количество совпадений первой буквы текста с остальными.
Дан текст. Найти количество совпадений предпоследней буквы текста с остальными
Дана матрица чисел. Найти все натуральные чиста (до 50).

 

Отчет.

Отчет должен содержать следующие разделы: титульный лист, задание, текст программы, примеры (не менее 2-х), вывод.


 

Лабораторная работа N 8

по дисциплине "Теория и технология программирования"

на тему: "Методы хэширования"

Цель работы.

Цель задания - овладеть методами хэширования.

 

Задание.

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

№п/п Индивидуальный вариант задания
Дан текст. Произвести хэширование по строкам.
Дан текст. Произвести хэширование по словам.
Дан текст. Произвести хэширование по блокам, содержащих в себе 10 элементов (символов).
Дан текст. Произвести хэширование по словам, поиск проводить двух слов подряд по двум хэшам подряд.
Дана таблица текстовой базы данных с полями фиксированной ширины. Произвести хэширование по двум полям и поиск в этих полях.
Дана таблица текстовой базы данных с полями фиксированной ширины. Причем имеются как текстовые, так и числовые поля. Произвести хэширование по двум полям и поиск в этих полях.
Дана таблица текстовой базы данных записями: фамилия; имя; отчество. Произвести хэширование отдельно каждого поля и поиск по запросу «Фамилия Имя Отчество».
Дана таблица текстовой базы данных записями: фамилия; имя; отчество. Произвести хэширование вместе трех полей и поиск по запросу «Фамилия Имя Отчество»
Дана таблица текстовой базы данных записями: фамилия; имя; отчество. Произвести хэширование вместе трех полей и поиск по запросу «Фамилия Имя Отчество» и «Фамилия И.О.»
Дана таблица текстовой базы данных записями: фамилия; имя; отчество; телефон. Произвести хэширование и поиск по номеру телефона.
Дана таблица текстовой базы данных записями: фамилия; имя; отчество; адрес (улица, дом). Произвести хэширование и поиск по адресу (отдельно по названию улицы и по названию улицы и номеру дома).
Дан массив символов (числа через пробел). Произвести хэширование слов и поиск числа по массиву.
Дан текст. Произвести хэширование по словам и поиск всех совпадающих слов.
Дан текст. Произвести хэширование по словам (буквы в обратном порядке) и поиск всех совпадающих слов.
Дан текст. Произвести хэширование по строкам в обратном порядке. И поиск слова в тексте.
Дана база данных автомобилей. Произвести хэширование и поиск по номерам автомобилей и Фамилией И.О. владельцев.
Дан текст. Произвести хэширование по словам (буквы в обратном порядке), поиск проводить двух слов подряд по двум хэшам подряд.
Дан текст. Произвести хэширование по блокам (в обратном порядке), содержащих в себе 5 элементов (символов).
Дана таблица текстовой базы данных записями: фамилия; имя; отчество. Произвести хэширование вместе трех полей (в обратном порядке) и поиск по запросу «Фамилия Имя Отчество» и «Фамилия И.О.»
Дана таблица текстовой базы данных записями: фамилия; имя; отчество; телефон (телефонный номер представлен в международной классификации номеров: +7812-123-45-78). Произвести хэширование и поиск по номеру телефона.

 

Отчет.

Отчет должен содержать следующие разделы: титульный лист, задание, текст программы, примеры (с показом хэш-данных), вывод.

Лабораторная работа N 9

по дисциплине "Теория и технология программирования"

на тему: "Использование библиотек динамической компоновки"

 

Цель работы.

Цель задания – Ознакомиться с возможностью и методами использования библиотек динамической компоновки dll (Dynamic Linked Library).

 

Задание.

Написать программу в которой для вычисления функции, используется динамически подключенная библиотека dll. Вычисление ряда проводить до условия минимизации значения разности двух соседних членов ряда меньше заданного эпсилон. Вычислить значения невязки значений рядной и стандартной Windows ("math.h") функций , проанализировать динамику изменения значения невязки в зависимости от количества слагаемых в ряде. Для остановки счета рядов необходимо использовать следующее условие: .

 

Вариант заданной собственной функции:

Вычисление ;

Вычисление exp(x), ;

число е, ;

число пи, ;

Вычисление sin2(x), ;

Вычисление cos2(x), ;

Вычисление ;

Вычисление sin(x), ;

Вычисление cos(x) ;

Вычисление cos3(x), ;

Вычисление cosec2(x), , ;

Вычисление квадратного корня;

Вычисление sec2(x);

Вычисление ex(1+x);

Вычисление кубического корня;

Возведение в квадрат и куб;

Вычисление esin(x);

Вычисление ecos(x);

Вычисление etg(x);

Вычисление earcsin(x);

 

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

 

В работе должны вводиться с клавиатуры следующие переменные:

Точность , границы промежутка вычисления и шаг , значение для точного расчета.

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

 

x MyFunction(x) Function(x)
     
     
     

 

Имя функции в таблице (Function) должно передаваться из библиотеки и должно изменяться при замене файла dll на файл другого варианта.

Далее пользователю должно быть предложено ввести значение и выведена таблица с вычислением значения функции для заданного для различных значений точности (в диапазоне 10-1 - 10-7)

MyFunction(x) Function(x)
0.1      
     
0.0000001      

 

 

Формат функций для совместной работы
приложений с библиотеками

Для корректной совместной работы приложения и dll, в проекте библиотеки необходимо использовать следующий формат функций:

double myf_группа(double /*1 параметр*/, double /*2 параметр*/, double /*точность*/)

//Возвращает значение собственной функции. В теле функции myf_группа

//должен быть вызов внутренней функции family_func, в которой будет

//производится вычисление "рядной" функции.

//В функции myf_группа вместо имени "группа" должна быть выполнена

//подстановка дроби вашей группы (1,2,3)

double myf_math(double /*1 параметр*/, double /*2 параметр*/)

//Возвращает значение математической функции

char * FName();

//Возвращает строку названия функции

Внутренняя функция:

family_func(/*необходимые параметры*/)

//где family – ваша фамилия

//func название вычисляемой функции.

//Функция family_func вызывается из функции myf.

 

Пример получения данных из библиотеки

Передача названия функции из dll:

extern "C" __declspec(dllexport) char* ToString( )

{ return "MyFunctionName"; }

 

Вызов из приложения:

HINSTANCE p_dll = LoadLibrary ("путь_и_имя_библиотеки.dll");

typedef char* (*Func)( );

Func Name = (Func)GetProcAddress( p_dll, "ToString" );

cout >> Name( );

 

Отчет.

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


 

Лабораторная работа N 10

по дисциплине "Теория и технология программирования"

на тему: "Класс для работы со строками CString"

 

Цель работы.

Цель задания - изучить методы работы с классом CString.

 

Задание.

Написать текстовый редактор с параметрами (индивидуальным заданием), представленными в системной матрице:

№п/п задание
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.

 

Варианты индивидуальных заданий:

1. Поиск символа (ов)

2. Вставка в начало

3. Добавление в конец

4. Отбор (с N до M символа)

5. Копирование строк

6. Замена всех строчных букв прописными.

7. Замена всех первых строчных букв слов прописными.

8. Поиск в строке

9. Вставка текста из файла

10. Удаление символов сначала строки

11. Удаление символов с конца строки

 

Отчет.

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

Пример получения кода символов клавиатуры:

#include "stdafx.h"

#include <conio.h>

#include <ctype.h>

int main(int argc, char* argv[])

{

int ch;

_cputs( "Type 'Y' when finished typing keys: " );

do

{

ch = _getch();

printf ("%i",ch);

ch = toupper( ch );

} while( ch != 'Y' );

_putch( ch );

_putch( '\r' ); /* Carriage return */

_putch( '\n' ); /* Line feed */

return 0;

}