Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Технологии программирования. Учебно-методическое пособие для СПО
.pdf
2.Способы описания массивов на языке Си. Понятия размерности массивов,
описание размерности массивов.
3.Задание типов элементов массива. Могут ли элементы массива иметь
разный тип?
4.Как располагаются элементы массива в памяти?
5.Чем отличаются алгоритмы поиска максимального и минимального
элемента массива.
6.Что является общим во всех алгоритмах формирования и обработки
массивов?
7. Чем отличаются алгоритмы расчета суммы и подсчета числа элементов
массива.
81

Занятие № 12
Создание меню в Windows-приложение
Цель работы: научиться создавать элементы интерфейсов для приложения и
писать простой обработчик событий на C++ для приложения WindowsForms,
работающего под управления .NET Framework.
Методические указания к практическому занятию
В работе необходимо научиться пользовать элементами управления, такими
как Надписи (label), Текстовые поля (textbox), Кнопки (Button) и Меню
(MenuStrip) для разработки программного интерфейса. Работа состоит из двух
заданий.
Задание 1. Создать на форме меню для ввода и обработки матрицы.
В работе необходимо создать форму с меню, предназначенного формировать
датчиком случайных чисел матрицу размером 5х5, обрабатывать эту матрицу и
выводить результаты вычислений. Кроме этого предусмотрим вывод
информации о разработчике на экран. В качестве примера обработки
определим максимальное значение из элементов матрицы. Для этого:
1. Создать новый проект WindowsFormsс именем form_lab9.cpp.
2. Разместить на форме элементы управления и настроить их свойства
Сначала настроим свойства формы: введем заголовок формы в свойство Text,
увеличим ширину формы и зададим цвет формы, изменив свойство BackColor,
например, на цвет LightGrey из списка Web.
Поместить на форму компонент MenuStrip (Меню).При этом на форме
появится светлый прямоугольник с текстом: «Вводить здесь». Щелкнув
мышью по прямоугольнику, вы перейдете в режим ввода названия пункта
меню. Например, назовем первый пункт: «Выбор цвета формы». Ниже
откроется прямоугольник для ввода пунктов подменю, а правее: названия
следующего пункта меню. Таким образом, создайте первый пункт меню
следующего вида:
82

Т.к. выбор каждого пункта меню должен приводить к выполнению
некоторых действий, создайте обработчики событий для каждого
подпункта этого пункта меню, изменяя свойство формы BackColor,
например, так:
this->BackColor=Color::Red;
Откомпилируйте проект и проверьте работу первого пункта меню.
Добавим следующий пункт меню, назвав его «Работа с матрицей», а для него
создадим два подпункта: «Формирование» и «Обработка». Меню примет вид:
Закончим формирование меню, добавив третий пункт «О программе», в
котором создадим подпункты: «Сведения о разработчике» и «Задание по
обработке». И последний пункт будет называться «Выход».
83

Перетащим на форму Надпись (label) для вывода результатов обработки и
разместим её на середине формы. Форма примет вид:
3. Создать обработчики событий для остальных пунктов меню
Перейдем к написанию обработчиков событий для пункта меню «Работа с
матрицей». Напишем две функции: дляформирования матрицы датчиком
случайных чисел и для поиска максимального значения и поместим их в
библиотечный файлс исходными кодами. Для этого щелкнем правой кнопкой
мыши в Обозревателе решений на папке Файлы исходного кода, далее
вызовем меню правой кнопкой мыши. В появившемся меню выберем:
Добавить -> Создать Элемент. В открывшемся окне вписываем название
файла – Matrica.cpp и нажимаем Добавить.
В файл поместим следующий код:
#pragmaonce
#include"stdafx.h"
#include"stdlib.h"//библиотека содержит функцию rand()
void form(int matr[5][5])
{
int i,j;
for (i=0;i<5;i++)
for(j=0;j<5;j++)
matr[i][j]=rand()%100-40;
84

}
int Maximum(int matr[5][5])
{int i,j;intm=0;
for (i=0;i<5;i++)
for(j=0;j<5;j++)
if(matr[i][j]>m)
m=matr[i][j];
return m;
}
Следующим шагом нужно добавить заголовочный файл Matrica.h в проект. Для
этого щелкнем правой кнопкой мыши в Обозревателе решений на папке
Заголовочные файлы, далее меню Добавить -> Создать Элемент, вписываем
название файла – Matrica.h и нажимаем Добавить. В данном файле будет
содержаться прототипы (заголовки) разработанных функций и описание общих
переменных. Добавляем туда следующий исходный код:
static intA[5][5]; //Описание матрицы
void form(intmatr[5][5]);
int Maximum(intmatr[5][5]);
Далее подключаем этот файл к проекту с помощью директивы #include –
Открываем главный файл проекта: form_lab9.cpp и добавляем туда после
строчки #include "stdafx.h" следующий код:
#include "Matrica.h"
Теперь наш заголовочный файл подключен к проекту и все готово к созданию
обработчиков событий.
Приведите обработчики событий выбора пунктов меню «форматирование» и
«обработка» к следующему виду:
//формирование матрицы датчиком случайных чисел
private: System::VoidформированиеToolStripMenuItem_Click(System:: Object^
sender, System::EventArgs^ e)
{
int i,j;
85

System::String^s=gcnew String("");
form(A);//вызов функции Form()
//Вывод матрицы в окно MessageBox
for (i=0;i<5;i++)
{
for(j=0;j<5;j++)
s=s+System::Convert::ToString(A[i][j])+"\t";
s=s+"\r\n";
}
MessageBox::Show(s," Матрица");
}
//обработка матрицы
private: System::Void обработкаToolStripMenuItem_Click(System::Object^ sender,
System::EventArgs^ e)
{
int max;
max=Maximum(A);//вызов функции Maximum()
label1->Text="Значение максимума=" +System::Convert::ToString(max);
}
Используя окно сообщений MessageBox, создадим обработчики событий для
вывода информации о разработчике и задания по обработке матрицы.
Процедуру обработки события «выход» приведем к следующему виду:
private: System::Void выходToolStripMenuItem_Click(System::Object^ sender,
System::EventArgs^ e)
{
this->Close();
}
Откомпилируйте проект и проверьте работу всех пунктов меню.
86

Задание 2. Обработка массива по индивидуальному заданию.
Напишите программу на языке С++ для обработки матрицы по варианту:
ВАРИАНТ №1
Написать программу
- сформировать матрицу А(NхN)
- найти в матрице количество четных и количество нечетных чисел
матрицы;
- уменьшить значения диагональных (главной и побочной) элементов
матрицы на наименьшее число, полученное в предыдущем пункте
задания.
Программа должна осуществить вывод исходной матрицы и
преобразованной.
ВАРИАНТ №2
Написать программу
- сформировать матрицу А(NхN)
- найти в матрице количество отрицательных и количество
положительных чисел матрицы;
- уменьшить все значения матрицы на наибольшее число, полученное в
предыдущем пункте задания.
Программа должна осуществить вывод исходной матрицы и
преобразованной.
ВАРИАНТ №3
Написать программу
- сформировать матрицу А(NхN)
- найти в матрице количество отрицательных чисел на главной диагонали
и на побочной диагонали матрицы отдельно;
- увеличить элементы матрицы на наименьшее число, полученное в
предыдущем пункте задания.
Программа должна осуществить вывод исходной матрицы и
преобразованной.
87

ВАРИАНТ №4
Написать программу
- сформировать матрицу А(NхN)
- найти в матрице количество четных чисел на главной диагонали
матрицы;
- уменьшить значения элементов матрицы, стоящих под побочной
диагональю на число, полученное в предыдущем пункте задания.
Программа должна осуществить вывод исходной матрицы и
преобразованной.
ВАРИАНТ №5
Написать программу
- сформировать матрицу А(NхN)
- найти в матрице количество нечетных чисел под главной диагональю
матрицы;
- уменьшить все отрицательные значения матрицы на число, полученное
в предыдущем пункте задания.
Программа должна осуществить вывод исходной матрицы и
преобразованной.
ВАРИАНТ №6
Написать программу
- сформировать матрицу А(NхN)
- найти в матрице количество четных чисел над главной диагональю
матрицы;
- найти значения максимального на главной диагонали и минимального
элемента матрицы на побочной диагонали.
Программа должна осуществить вывод исходной матрицы и
преобразованной.
ВАРИАНТ №7
Написать программу
- сформировать датчиком случайных чисел целочисленную матрицу
А(6х6);
88

- найти в матрице количество отрицательных чисел под главной
диагональю матрицы;
- увеличить элементы второго столбца матрицы на число, полученное в
предыдущем пункте.
Программа должна осуществить вывод исходной матрицы и
преобразованной.
ВАРИАНТ №8
Написать программу
- сформировать датчиком случайных чисел целочисленную матрицу
А(6х6);
- найти в матрице сумму чисел, стоящих над побочной диагональю;
- увеличить элементы третьего столбца матрицы на число, полученное в
предыдущем пункте.
Программа должна осуществить вывод исходной матрицы и
преобразованной.
ВАРИАНТ №9
Написать программу
- сформировать датчиком случайных чисел целочисленную матрицу
А(4х4);
- найти в матрице количество нулевых элементов;
- увеличить все отрицательные числа матрицы на число, полученное в
предыдущем пункте.
Программа должна осуществить вывод исходной матрицы и
преобразованной.
ВАРИАНТ №10
Написать программу
- сформировать датчиком случайных чисел целочисленную матрицу
А(6х6);
- найти в матрице сумму отрицательных чисел;
- увеличить элементы последней строки матрицы на число, полученное в
предыдущем пункте.
Программа должна осуществить вывод исходной матрицы и
преобразованной.
89

ВАРИАНТ №11
Написать программу
- сформировать датчиком случайных чисел целочисленную матрицу
А(5х6);
- найти в матрице сумму положительных чисел;
- увеличить отрицательные элементы матрицы на число, полученное в
предыдущем пункте.
Программа должна осуществить вывод исходной матрицы и
преобразованной.
ВАРИАНТ №12
Написать программу
- сформировать датчиком случайных чисел целочисленную матрицу
А(3х6);
- найти в матрице минимальное отрицательное число;
- увеличить элементы первой строки матрицы на число, полученное в
предыдущем пункте.
Программа должна осуществить вывод исходной матрицы и
преобразованной.
ВАРИАНТ №13
Написать программу
- сформировать датчиком случайных чисел целочисленную матрицу
А(5х5);
- найти в матрице количество положительных чисел;
- увеличить элементы побочной диагонали на число, полученное в
предыдущем пункте.
Программа должна осуществить вывод исходной матрицы и
преобразованной.
ВАРИАНТ №14
Написать программу
- сформировать датчиком случайных чисел целочисленную матрицу
А(6х4);
- найти в матрице минимальное положительное число;
90
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
