Главная страница

Программирование алгоритмов формирования и обработки двумерных массивов. ЗБИК2051_ГлиненкоАИ_ЛР7. Лабораторная работа 7 по теме Программиро ван ие а лгори тмов формирован ия и обработки д ву мерн ых масси вов


Скачать 1.39 Mb.
НазваниеЛабораторная работа 7 по теме Программиро ван ие а лгори тмов формирован ия и обработки д ву мерн ых масси вов
АнкорПрограммирование алгоритмов формирования и обработки двумерных массивов
Дата15.03.2022
Размер1.39 Mb.
Формат файлаpdf
Имя файлаЗБИК2051_ГлиненкоАИ_ЛР7.pdf
ТипЛабораторная работа
#397952

Мо ско вск ий Тех ническ ий Ун иверситет Связи и
И нформати ки
Лабораторная работа №7 по теме:
«Программиро ван ие а лгори тмов формирован ия и обработки д ву мерн ых масси вов »
Выполнил:
Глиненко Арина Игоревна
Вариант №3
Группа: БИК2051
Лектор к.т.н., доц.:
Саркисова Ирина Олеговна
Москва 2021

2
Общее задание
Сформируйте произвольный двумерный массив L(m,m). Найдите в каждой строке наибольший элемент и поменяйте его местами с элементом главной диагонали.
Создание блок-схемы
1) Перестановка максимума
2) Создание новой матрицы и главной диагонали в строке i=1; iПрисвоение перестановленной строки, строке матрицы i=1; iЗначение элемента строки матрицы максимальное нет да
*(b+i)=*(a+i) i=1; i

3
Разработка пр иложе ния
1 . Созд ание нового проекта
1) Запустить VS.
2) Выполнить команду Создать проект.... На экране появится диалоговое окно Создание проекта.
3) Выбрать шаблон CLR Приложения Windows Form и в диалоговом окне Создание проекта ввести в текстовом поле Имя (нижней части диалогового окна Создание проекта) имя проекта ЛР-ЯП-07-3 и указать местоположение файла проекта.
4) Щелкнуть на кнопке ОК диалогового окна Создание проекта.
VS присвоит проекту имя ЛР-ЯП-07-3 и отобразит основное окно VS с различными панелями, среди которых присутствует окно конструктора форм с пустой формой Form1. Эта форма будет использоваться для создания интерфейса пользователя.

4 2. Разработка графического интерфейса пользователя
3. Таблица используемых объектов
Тип объекта
Класс объекта
Свойство
Значение свойства
Форма
Form
Name
Form1
Text
Динамические двумерные массивы
BackColor
ActiveCaption
Текстовое поле
TextBox
Name textM
Текстовое поле
TextBox
Name textN
Текстовое поле
TextBox
Name textA

5
Текстовое поле
TextBox
Name textB
Список
ListBox
Name listBox1
Enabled
False
Список
ListBox
Name listBox2
Enabled
False
Кнопка
Button
Text
Решение
Кнопка
Button
Text
Выход
4. Написание программного кода
Текст заголовочного файла Header.h в котором прописаны прототипы функций.
//Заголовочный файл "Header.h"
using namespace
System; using namespace
System::Windows::Forms; int
** input(
int m
, int n
, int a
, int b
); bool
GetInt(
int
&,
TextBox
^,
String
^); void output(
int
**, int m
, int n
,
ListBox
^); int
** task(
int
**, int
, int
); int
* copy(
int
*, int
, int
); void del(
int
**, int
);
Текст файла GetPut.cpp содержащего функции ввода-вывода.
//Файл ввода-вывода "GetPut.cpp"
#include
"Header.h"
int
** input(
int m
, int n
, int a
, int b
)
{ int
** matr = new int
*[
m
]; if
(
a
>
b
)
{ int t = a
; a
= b
; b
= t;
}
Random
^ rnd = gcnew
Random
; for
(
int i = 0; i < m
; i++)
{
*(matr + i) = new int
[
n
]; for
(
int j = 0; j < n
; j++)
*(*(matr + i) + j) = rnd->Next(
a
, b
);
} return matr;
} void output(
int
** mas
,
int m
, int n
,
ListBox
^
Lb
)
{
Lb
->Items->Clear(); for
(
int i = 0; i < m
; i++)
{
String
^ s =
""
; for
(
int j = 0; j < n
; j++) s = s
+
String
::Format(
"{0,-5:D2}"
, *(*(
mas
+ i) + j));
Lb
->Items->Add(s);
}
}

6 bool
GetInt(
int
& x
,
TextBox
^
Tx
,
String
^ s
)
{ if
(
Tx
->Text->Length == 0)
{
MessageBox
::Show(
s
,
"Ошибка ввода"
,
MessageBoxButtons
::
OK
,
MessageBoxIcon
::
Error
);
Tx
->Focus(); return false
;
} x
=
Convert
::ToInt16(
Tx
->Text); return true
;
} void del(
int
** a
, int m
)
{ for
(
int i = 0; i < m
; i++) delete
[] * (
a
+ i); delete
[] a
;
}
Текст файла task.cpp с функцией нахождения локального минимума и присвоения значений новому массиву.
//Файл функции "task.cpp"
#include
"Header.h"
int
* copy(
int
* a
, int n
, int m
)
{ int
* b = new int
[
n
]; for
(
int i = 0; i < n
; i++)
*(b + i) = *(
a
+ i); int max = 0; int p = 0; for
(
int i = 0; i < n
; i++) if
(b[i] > max)
{ p = i; max = b[p];
} int o = b[
m
]; b[
m
] = a
[p]; b[p] = o; return b;
} int
** task(
int
** matr
, int m
, int n
)
{ int
** newmas = new int
*[
m
]; for
(
int i = 0; i < m
; i++)
*(newmas + i) = copy(*(
matr
+ i), n
, i); return newmas;
}
Часть текста файла MyForm.h после #pragma endregion с описанием событийных процедур.
#pragma endregion private
: System::
Void button1_Click(System::
Object
^ sender
, System::
EventArgs
^ e
)
{ listBox1->Items->Clear(); listBox2->Items->Clear(); int m, n; int a, b; if
(!GetInt(m, textM,
"Введите число строк матрицы"
))
return
;

7 if
(!GetInt(n, textN,
"Введите число столбцов матрицы"
))
return
; if
(!GetInt(a, textA,
"Введите левую границу диапазона"
))
return
; if
(!GetInt(b, textB,
"Введите правую границу диапазона"
))
return
; int
** matr = input(m, n, a, b); output(matr, m, n, listBox1); int
** newmas = task(matr, m, n); if
(newmas)
{ output(newmas,m, n, listBox2);
} else
MessageBox
::Show(
"Новый массив не создан"
); del(matr, m);
} private
: System::
Void button2_Click(System::
Object
^ sender
, System::
EventArgs
^ e
)
{ this
->Close();
}
5. Результат работы программы

8
При ошибке ввода данных.


написать администратору сайта