Добавил:
Тот самый Малыхя на партах и на досках Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛРТП.docx
Скачиваний:
4
Добавлен:
13.03.2024
Размер:
1.83 Mб
Скачать
  1. Cодержимое технического задания

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

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

3. В ходе решения задачи своего варианта предусмотреть написание функций для создания массива из случайных чисел, создания нового из исходного и для вывода массивов в dataGridView. Для решения задачи своего варианта использовать многочисленные методматериалы, которые перечислены в пояснениях (ЭОИС).

4. Подготовить тесты для контрольного решения задачи. Показать их

использование, отобразив в отчете по заданию.

5. Выполнить проект и получить результаты, которые отобразить в виде рисунков при написании отчета по заданию.

6. Осуществить запись массивов в текстовый редактор Microsoft Word.

7. Выполнить отчет в соответствии с ГОСТ на схемы алгоритмов и согласно ГОСТ оформления отчетов по НИР.

Программный код DLL-библиотеки

void Class1::enter_mas(int* mas, int n)

{

srand(time(0));

for (int i = 0; i < n; i++)

mas[i] = (int)(rand() % 900) / 20 - 20;

}

void Class1::output_mas(int* mas, int len, DataGridView^ grid)

{

grid->ColumnCount = len;

grid->RowCount = 2;

for (int i = 0; i < len; i++)

{

grid->Rows[0]->Cells[i]->Value = "[" + i + "]";

grid->Rows[0]->Cells[i]->Value = mas[i];

}

int widht = 0;

for (int s = 0; s < grid->ColumnCount; s++)

widht += grid->Columns[s]->Width;

if (widht > 400)

grid->Width = 440;

else

grid->Width = widht;

}

int Class1::kol(int* mas, int n)

{

int p = mas[0];

for (int i = 0; i < n; i++)

if (mas[i] < p)

{

p = mas[i];

}

return p;

}

void Class1::set_mas(int* mas, int* rezmas, int n, int p, int& j)

{

j = 0;

for (int i = 0; i < n; i++)

if (mas[i] > p)

{

rezmas[j] = mas[i];

j++;

}

}

void Class1::add() {

ADOX::Catalog^ k = gcnew ADOX::CatalogClass();

try {

k->Create("Provider=Microsoft.ACE.OLEDB.16.0;Data Source=C:\\Users\\User\\source\\repos\\DBAccess.mdb");

MessageBox::Show("База данных успешно создана");

}

catch (System::Runtime::InteropServices::COMException^ situation) {

MessageBox::Show(situation->Message);

}

finally {

k = nullptr;

}

}

void Class1::add_struct() {

auto p = gcnew OleDbConnection("Provider=Microsoft.ACE.OLEDB.16.0;Data Source=C:\\Users\\User\\source\\repos\\DBAccess.mdb");

p->Open();

auto c = gcnew OleDbCommand("CREATE TABLE [Massivs] ([Номер элемента] counter, [Исходный массив] char (200), [Результирующий массив] char(200))", p);

try {

c->ExecuteNonQuery();

MessageBox::Show("Структура базы данных записана");

}

catch (Exception^ situation) {

MessageBox::Show(situation->Message);

}

p->Close();

}

void Class1::add_zap(int* arr, int* rezmas, int len, int j) {

for (int i = 0; i < len; i++) {

auto p = gcnew OleDbConnection("Provider=Microsoft.ACE.OLEDB.16.0;Data Source=C:\\Users\\User\\source\\repos\\DBAccess.mdb");

p->Open();

if (i < j) {

auto c = gcnew OleDbCommand("INSERT INTO [Massivs] (" + " [Исходный массив], [Результирующий массив]) VALUES('" + arr[i] + "','" + rezmas[i] + "')");

c->Connection = p;

c->ExecuteNonQuery();

}

else {

auto c = gcnew OleDbCommand("INSERT INTO [Massivs](" + " [Исходный массив], [Результирующий массив]) VALUES ('" + arr[i] + "', '')");

c->Connection = p;

c->ExecuteNonQuery();

}

p->Close();

}

MessageBox::Show("В таблицу 'Массивы' добавлена запись");

}

void Class1::zapWord(int* mas, int* rezmas, int n, int j)

{

auto Wrd = gcnew Microsoft::Office::Interop::Word::ApplicationClass();

Wrd->Visible = true;

auto inf = Type::Missing;

String^ str;

auto Doc = Wrd->Documents->Add(inf, inf, inf, inf);

Wrd->Selection->TypeText("Исходный массив");

Wrd->Selection->TypeParagraph();

Object^ t1 = Microsoft::Office::Interop::Word::WdDefaultTableBehavior::wdWord8TableBehavior;

Object^ t2 = Microsoft::Office::Interop::Word::WdAutoFitBehavior::wdAutoFitContent;

Wrd->Selection->TypeParagraph();

Wrd->Selection->TypeParagraph();

Microsoft::Office::Interop::Word::Table^ tbl = Wrd->ActiveDocument->Tables->Add(Wrd->ActiveDocument->Paragraphs[2]->Range, 2, n, t1, t2);

for (int i = 0; i < n; i++)

{

tbl->Cell(1, i + 1)->Range->InsertAfter("[" + Convert::ToString(i) + "]");

str = String::Format("{0:f0}", mas[i]);

tbl->Cell(2, i + 1)->Range->InsertAfter(str);

}

String^ str2;

Wrd->Selection->TypeText("Результирующий массив");

Microsoft::Office::Interop::Word::Table^ tbl2 = Wrd->ActiveDocument->Tables->Add(Wrd->Selection->Range, 2, j, t1, t2);

for (int i = 0; i < j; i++) {

tbl2->Cell(1, i + 1)->Range->InsertAfter("[" + Convert::ToString(i) + "]");

str2 = String::Format("{0:f0}", rezmas[i]);

tbl2->Cell(2, i + 1)->Range->InsertAfter(str2);

}

}