Добавил:
Я и кто? Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №12

.docx
Скачиваний:
0
Добавлен:
02.02.2023
Размер:
87.07 Кб
Скачать

Лабораторная работа №12

«Формирование и обработка двумерных массивов»

Содержание

1 Условие задачи 3

2 Ход работы 4

2.1 Разработка блок-схем 4

2.2 Код программы 6

2.3 Тестирование 7

Список использованных источников 8

1 Условие задачи

Сформировать произвольный двумерный массив. Из положительных элементов массива N сформировать массив M[n, max], где max-максимальное число положительных элементов строки массива N, располагая их в строках массива M подряд. Записать нули на место отсутствующих элементов массива M. Вывести полученный массив.

Для выполнения задачи необходимо:

• Дополнить dll библиотеку функцией enter_mas2(int** mas, int n, int m), которая заполняет двумерный массив случайными значениями.

• Дополнить dll библиотеку функцией output_mas2(int** mas, int n, int m, DataGridView^ grid), которая выводит двумерный массив.

• Дополнить dll библиотеку функцией rezmas22(int** mas, int** rezmas22, int n, int m, int& max), которая будет сформировывать результирующий массив согласно условию выше.

• Разработать событийную функцию, которая вызывает окно ввода размера исходного двумерного массива, функцию генерации исходного двумерного массива enter_mas2(mas, n, m), функцию вывода исходного двумерного массива output_mas2(mas, n, m, dataGridView1), функцию вычисления результирующего массива rezmas22(mas, rezmas22, n, m, max), и функцию вывода результирующего массива output_mas2(rezmas22, n, max, dataGridView2) и далее удаляет исходный и результирующий массив.

2 Ход работы

2.1 Разработка блок-схем

Блок схема функции rezmas22 представлена на рисунке 1

Рисунок 1-Блок схема функции rezmas22, осуществляющей вычисление результирующего массива

Блок-схема событийной функции представлена на рисунке 2

Рисунок 2-Блок-схема событийной функции

2.2 Код программы

DLL

namespace DLL7 {

void Class1::enter_mas2(int** mas, int n, int m) {

srand(unsigned(time(NULL)));

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

{

mas[i] = new int[m];

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

mas[i][j] = (int)(rand() % 100) - 20;

}

}

void Class1::output_mas2(int** mas, int n, int m, DataGridView^ grid)

{

grid->ColumnCount = m + 1;

grid->RowCount = n + 1;

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

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

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

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

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

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

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

grid->Rows[i + 1]->Cells[j + 1]->Value = mas[i][j];

}

int sum = 0;

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

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

if (sum > 1300) grid->Width = 1300;

else grid->Width = sum;

}

int h = 0;

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

h += grid->Rows[s]->Height;

if (h > 1300) grid->Height = 1300;

else grid->Height = h;

}

}

void Class1::rezmas22(int** mas, int** rezmas22, int n, int m, int& max) {

int k = 0;

max = 0;

int l = 0;

int f = m-1;

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

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

if (mas[i][j] > 0) {

k++;

}

}

if (k > max)

max = k;

k = 0;

}

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

rezmas22[i] = new int[m];

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

if (mas[i][j] > 0) {

rezmas22[i][l++] = mas[i][j];

}

else {

rezmas22[i][f--] = 0;

}

}

l = 0;

f = m-1;

}

}

Событийная

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

int n, m, max;

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

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

n = Convert::ToInt16(g);

m = Convert::ToInt16(w);

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

int** rezmas22 = new int* [m];

DLL7::Class1::enter_mas2(mas, n, m);

DLL7::Class1::output_mas2(mas, n, m, dataGridView1);

DLL7::Class1::rezmas22(mas, rezmas22, n, m, max);

DLL7::Class1::output_mas2(rezmas22, n, max, dataGridView2);

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

delete[](mas[i]);

delete[] mas;

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

delete[](rezmas22[i]);

delete[] rezmas22;

}

2.3 Тестирование

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

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

Список использованных источников

1) ГОСТ 7.32.2017 Система стандартов по информации, библиотечному и издательскому делу. Отчет о научно-исследовательской работе. Структура и правила оформления. – М.: Стандартинформ, 2017, - 27 с.