Теперь нам нужно будет изменить текст надписей для элементов Label и Button, и задать подходящие имена для элементов TextBox. Для этого выделите элемент label1, перейдите в Панель свойств, (обычно она находится под Панелью элементов. Если панель выключена, включите ее в меню Вид -> Диспетчер свойств) и задайте для данного элемента значение атрибута Text как показано на рисунке.
Задайте атрибут Text для всех элементов Label и Кнопки Button аналогичным образом. Наша форма должна принять примерно следующий вид:
Теперь измените для текстовых полей (TextBox) атрибуты Name в Панели Свойств – для первого поля это будет num1, а для второго, соответственно num2. Тем самым мы изменили имена классов для полей TextBox, чуть позднее Вы поймете зачем.
Итак, каркас формы готов. Если откомпилировать и запустить программу, то мы увидим, какой будет наша форма на финише, правда сейчас она совершенно бесполезна.
4. Сделать кнопку “ развернуть” неактивной,
так как изменение размеров данной формы испортит ее внешний вид. Вы также можете это сделать, щелкнув левой кнопкой мыши на пустом месте формы и в Панели свойств задать для атрибута MaximizeBox параметр False.
|
|
5. Создать обработчик событий для кнопки.
Перейдем к написанию обработчика событий для кнопки Button, т.е. что будет происходить при нажатии на эту кнопку. Также мы напишем саму функцию вычисления факториала, которую мы будем использовать в обработчике.
Первым делом нужно добавить заголовочный файл fact.h в проект. Для этого щелкнем правой кнопкой мыши в Обозревателе решений на папке Заголовочные файлы, далее меню Добавить -> Создать Элемент, вписываем название файла – fact.h и нажимаем Добавить. В данном файле будет содержаться прототип (заголовок) функции для вычисления факториала. Добавляем туда следующий исходный код.
long double fact(int N);
Далее подключаем этот файл к проекту с помошью директивы #include – Открываем файл factr.cpp и добавляем туда после строчки:
#include "stdafx.h"
следующий код:
#include "fact.h"
Теперь наш заголовочный файл подключен к проекту. Далее аналогичным образом создаем файл исходного кода fact.cpp в проект.
В него добавляем саму функцию вычисления факториала целого числа.
#pragma once
#include "stdafx.h"
long double fact(int N)
{
// если пользователь ввел отрицательное число
if(N < 0)
// возвращаем ноль
return 0;
// если пользователь ввел ноль
if (N == 0)
// возвращаем факториал нуля
return 1;
// Во всех остальных случаях
else
// делаем рекурсию
return N * fact(N - 1);
}
Теперь наш проект содержит функцию вычисления факториала. Откомпилируйте его. Если ошибок нет, то можно приступить к написанию обработчика событий для кнопки Button.
Открываем файл Form1.h, в нем мы видим визуальное представление нашей формы. Щелкаем двойным щелчком на кнопке Button и переходим к исходному коду процедуры обработки события нажатия кнопки (click).
|
|
После фигурной скобки ставим абзац и приступаем к кодированию.
Сначала нам необходимо описать и инициализировать переменную, в которой будет храниться число, для которого должен быть вычислен факториал. Добавим в то место, где Вы поставили абзац, следующий код:
int number = System::Convert::ToDouble(num1->Text);
Эта строка инициализирует переменную, которая хранит в себе число для вычисления его факториала. (Любой набор символов, которые мы будем вводить с клавиатуры в текстовое поле (TextBox) является строкой. Поэтому нам нужно вытащить значение из текстового поля и привести его к целочисленному типу. Это довольно сложная процедура, но, к счастью, в языке C++ есть функций, выполняющие конвертирование типов данных. Одна из таких функций (Convert) используется в приведенном выше коде).
Далее нам нужно будет произвести вызов нашей функции fact с переменной number в качестве единственного аргумента и занести результат работы функции в новую переменную factor.
double factor = fact(number);
Затем необходимо преобразовать полученное значение обратно в строку и присвоить его второму текстовому полю.
num2->Text = System::Convert::ToString(factor);
Таким образом, наш простой обработчик событий будет выглядеть вот так:
int number = System::Convert::ToDouble(num1->Text);
double factor = fact(number);
num2->Text = System::Convert::ToString(factor);