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

Схема алгоритма вывода массива в dataGridView показана на рисунке 2.

        1. Схема алгоритма вывода массива в dataGridView

На рисунке 3 представлена блок схема функции, находящей минимальный отрицательный элемент.

Рисунок 3 – функция, находящая минимальный отрицательный элемент.

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

        1. Рисунок 4 – Схема функции формирования нового массива

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

#include "pch.h"

#include <cstdlib>

#include <time.h>

#include "dllforlab4.h"

#include <cmath>

#include <math.h>

using namespace System;

using namespace System::Windows::Forms;

namespace dllforlab4 {

double Class1::Vvod(TextBox^ t)

{

return Convert::ToDouble(t->Text);

}

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[1]->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++;

}

}

  1. Программный код событийной процедуры

#pragma endregion

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

int p, j = 0;

String^ g = Interaction::InputBox("Введите количество элементов в массиве", "Ввод", "", -1, -1);

int n = Convert::ToInt16(g);

int* mas = new int[n];

int* rezmas = new int[n];

Class1::enter_mas(mas, n);

Class1::output_mas(mas, n, dataGridView1);

p = Class1::kol(mas, n);

MessageBox::Show("Минимальный элемент массива " + Convert::ToString(p), "", MessageBoxButtons::OK, MessageBoxIcon::Information);

label1->Text = "Минимальный элемент массива " + Convert::ToString(p);

Class1::set_mas(mas, rezmas, n, p, j);

Class1::output_mas(rezmas, j, dataGridView2);

delete[] mas;

delete[] rezmas;

}

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {

Application::Exit();

Диалоговое окно ввода количества элементов в массиве представлено на рисунке 5.

Рисунок 5 – Диалоговое окно ввода количества элементов в массиве

Результат работы программы представлен на рисунке 6.

Рисунок 6 – Результат работы программы