«

»

Visual C++. MFC. Программирование циклических процессов

Программисту часто приходиться пользоваться итерационными процессами, вне зависимости от того какой программой для написания кода он пользуется. Поэтому рассмотрим работу с циклами на примере решения следующей задачи.

Постановка задачи:

Переменная x меняется от xn до xk с шагом dx. Вывести таблицу значений x и y (y=esin(x)), вычислить сумму и произведение y.

Решение задачи:

Создадим диалоговое окно (мое имеет название ListBProg) и разместим на нем следующие компоненты:

  • 3 метки (Static Text);
  • 3 поля ввода (Edit Control);
  • 1 список (List Box);
  • 3 кнопки (Button).

Сделайте, чтобы имена и положение компонентов соответствовали скриншоту ниже.

List Box MFC

 

Добавим для полей ввода (Edit Control) переменные m_edit_xn, m_edit_xk, m_edit_dx, которые будут возвращать значение float. В функцию кнопки «Выход» впишем строку OnOK() для того чтобы программа завершала свою работу по нажатию соответствующей клавиши.

Изменим ID кнопок «Решить» и «Очистить» на ID_Solve и ID_Clear, а также добавим переменную m_Result для компонента List Box (рис. ниже).

Добавление переменной Visual C++

Щелкни для увеличения

 

Установите в свойствах List Box значение «Сортировка» в false, так как иначе содержимое будет сортироваться по алфавиту, а «С полосой прокрутки» в true.

Зададим начальные значения полей ввода. Для этого откроем файл ListBProgDlg.cpp (либо свое название) и в функцию OnInitDialog перед оператором return впишем следующий код:

 

1
2
3
4
5
6
7
8
9
10
BOOL CListBProgDlg::OnInitDialog()
{
...
// TODO: добавьте дополнительную инициализацию
m_edit_xn=-5;
m_edit_xk=4;
m_edit_dx=3;
UpdateData(FALSE);
return TRUE;
}

 

Осталось написать функции для работы с кнопками «Решить» и «Очистить».

Щелкаем по кнопке «Решить» и вводим следующий текст.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//подключите библиотеку math.h
void CListBProgDlg::OnBnClickedSolve()
{
int i; float x, xn, xk, dx, y, s, p;
CString S;
UpdateData(TRUE);
xn=m_edit_xn;
xk=m_edit_xk;
dx=m_edit_dx;
for (s=0, p=1, x=xn, i=0; x<=xk; x+=dx, i++)
{
y=exp(sin(x)); s+=y; p*=y;
S.Format (_T("x=%g y=%g"),x,y);
m_Result.AddString(S);
S.Format(_T("s=%g p=%g"), s, p);
m_Result.InsertString(0,S);
}
}

 

А для кнопки «Очистить» определите такой код:

 

1
2
3
4
5
6
7
void CListBProgDlg::OnBnClickedClear()
{
int j, n;
n=m_Result.GetCount();
for (j=0; j<n; j++)
m_Result.DeleteString(0);
}

 

Ну вот и все! Ваше приложение должно выглядеть во время работы примерно так:

 

Программа возвидения в степень - Kvodo.ru

 

Элемент List Box, также пригодиться для обработки массивов и других подобных задач. А отсюда Вы можете скачать исходники только что написанной нами программы.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вы можете использовать эти теги HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Проверка на человечность *