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

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

5. Выполнить отчет в соответствии с гост на схемы алгоритмов и согласно гост оформления отчетов по нир.

3 Разработка схем алгоритмов

Схемы алгоритмов представлены на рисунках 1-4.

Рисунок 1 – Алгоритм функции, предназначенный для поиска суммы нечетных отрицательных элементов

Рисунок 2 – Алгоритм функции, формирующий новый массив из элементов исходного массива, значения которых больше найденного числа

Рисунок 3 – Алгоритм событийной процедуры

4 Разработка программного кода

Код dll-библиотеки представлен ниже.

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;

}

void Class1::entermas2(double** arr, int n, int m) {

srand(unsigned(time(NULL)));

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

arr[i] = new double[m];

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

arr[i][j] = (double)(rand() % 100) - 20;

}

}

void Class1::outputmas2(double** arr, int n, int m, DataGridView^ grid1) {

grid1->ColumnCount = m + 1;

grid1->RowCount = n + 1;

grid1->Rows[0]->Cells[0]->Value = "[" + n + "]" + "[" + m + "]";

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

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

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

grid1->Rows[0]->Cells[j + 1]->Value = "[" + j + "]";

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

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

grid1->Rows[i + 1]->Cells[j + 1]->Value = arr[i][j];

int sum1 = 0, sum2 = 0;

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

sum1 += grid1->Columns[s]->Width;

if (sum1 > 730)

grid1->Width = 730;

else

grid1->Width = sum1 + 3;

for (int r = 0; r < grid1->RowCount; r++)

sum2 += grid1->Rows[r]->Height;

if (sum2 > 230)

grid1->Height = 230;

else

grid1->Height = sum2 + 3;

}

int Class1::sumotr(double** arr, int n, int m, int& summ, int& count) {

summ = 0;

count = 0;

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

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

if ((i + j) % 2 != 0 && arr[i][j] < 0) {

summ += arr[i][j];

count++;

}

}

}

return count;

}

int* Class1::newmas(double **arr, int n, int m, int count, int& len)

{

int* mas = new int[n * m];

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

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

if (arr[i][j] > count)

{

mas[len] = arr[i][j];

len++;

}

return mas;

}

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

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

Application::Exit();

}

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

try {

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

int n = Convert::ToInt32(r);

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

int m = Convert::ToInt32(c);

double** arr = new double* [n];

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

arr[i] = new double[m];

}

int g = 0;

int summ = 0;

int count = 0;

Class1^ class1Object = gcnew Class1(); // Создаем экземпляр класса Class1 из DLL

class1Object->entermas2(arr, n, m);

class1Object->outputmas2(arr, n, m, dataGridView1);

class1Object->sumotr(arr, n, m, summ, count);

MessageBox::Show("Cумма найденных элементов равно " + Convert::ToString(summ), "", MessageBoxButtons::OK, MessageBoxIcon::Information);

MessageBox::Show("Количество найденных элементов равно " + Convert::ToString(count), "", MessageBoxButtons::OK, MessageBoxIcon::Information);

int len = 0;

int* mas = Class1::newmas(arr, n, m, count, len);

Class1::output_mas(mas, len, dataGridView2);

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

delete[] arr[i];

delete[] arr;

delete[] mas;

}

catch (Exception^ ex) {

MessageBox::Show("Произошла ошибка: " + ex->Message, "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::Error);

}

}