Программисту часто приходиться пользоваться итерационными процессами, вне зависимости от того какой программой для написания кода он пользуется. Поэтому рассмотрим работу с циклами на примере решения следующей задачи.
Постановка задачи:
Переменная x меняется от xn до xk с шагом dx. Вывести таблицу значений x и y (y=esin(x)), вычислить сумму и произведение y.
Решение задачи:
Создадим диалоговое окно (мое имеет название ListBProg) и разместим на нем следующие компоненты:
- 3 метки (Static Text);
- 3 поля ввода (Edit Control);
- 1 список (List Box);
- 3 кнопки (Button).
Сделайте, чтобы имена и положение компонентов соответствовали скриншоту ниже.
Добавим для полей ввода (Edit Control) переменные m_edit_xn, m_edit_xk, m_edit_dx, которые будут возвращать значение float. В функцию кнопки «Выход» впишем строку OnOK() для того чтобы программа завершала свою работу по нажатию соответствующей клавиши.
Изменим ID кнопок «Решить» и «Очистить» на ID_Solve и ID_Clear, а также добавим переменную m_Result для компонента List Box (рис. ниже).
Установите в свойствах 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); } |
Ну вот и все! Ваше приложение должно выглядеть во время работы примерно так:
Элемент List Box, также пригодиться для обработки массивов и других подобных задач. А отсюда Вы можете скачать исходники только что написанной нами программы.