Лабораторная работа 5. Do..while loop
Выполнить: Создайте
приложение Windows Forms Application , которое вычисляет сумму ряда x
+ x/2 + x/3 + x/4 + … для (|x| < 1) и
количество слагаемых в этой сумме. Расчет производится пока приращение не будет
меньше заданной точности.
[Solution and Project name: Lab7, form name Lab7.cs]
Пример выполнения:

Алгоритм:
Инструментарий:
|
элемент
управления |
значение
свойства |
значение
свойства |
|
form |
Lab7 |
Сумма ряда |
|
button |
btnCalc |
Вычислить |
|
textbox 1 |
txtX |
0 |
|
textbox 2 |
txtPrecision |
0 |
|
Label |
lblResult |
0 |
|
Labels |
1.
Внимание! Свойства name всех
элементов управления должны быть заданы в соответствии с таблицей.
2.
Создайте новый проект (Файл
→ Создать → Проект → Windows Forms Application ),
дайте ему имя — Lab7;
свойство name формы
должно быть Lab7 (окно Свойства window → (Name)).
3.
Расположите элементы управления, как на рисунке.
4.
Запрограммируйте событие Click для
кнопки. Для того чтобы это сделать дважды щелкните по кнопке на форме.
5.
Объявите переменные для хранения значений: количество слагаемых, суммы и само слагаемое:
private void btnCalc_Click(object sender, EventArgs e) { // здесь ваш код int counter=0; // количество слагаемых double sum=0; // сумма double summand=0.0; // слагаемое double x; //... } |
6.
Для вычисления суммы ряда будем использовать цикл do..while. Каждое
слагаемое — это результат операции деления x на counter. Для того, чтобы избежать
появления ошибки в случае неверного значения для x, будем
использовать процедуру TryParse():
//... do { counter++; if (double.TryParse(txtX.Text, out x)){ summand = double.Parse(txtX.Text) / counter; } sum += summand; } while (Math.Abs(summand) > double.Parse(txtPrecision.Text)); |
7.
Результат будем размещать в метке lblResults. Для этого после цикла добавьте
код:
lblResult.Text = "сумма = " + sum + ", количество = " + counter; |
8.
Запустите приложение, используйте запятую в качестве
плавающей точки, например: 0,3.
9.
Изменим условие цикла так, чтобы при вводе некорректного
значения для приращения,
не возникала бы ошибка. Будем использовать логическую переменную. Добавьте код
непосредственно перед циклом:
bool f = false; if (double.TryParse(txtPrecision.Text, out precision)) { f = true; } |
переменная f — индикатор того, правильно ли введено значение для
приращения. Если значение верное, то f = true.
10.
Изменяем условие цикла:
//.. while (f && Math.Abs(summand) > precision); |
Проверяем
значение «индикатора» f. Если true, то приращение задано верно, можем продолжить выполнение тела цикла. Ну и
кроме того слагаемое должно
быть больше приращения (по
условию задания).
11.
В том случае, если пользователь вводит некорректное значение,
будем информировать его об этом, используя класс Messagebox и
оператор if.
Измените код вывода результатов:
if (f) { lblResult.Text = "сумма = " + sum + ", количество = " + counter; } else { MessageBox.Show("введите числовое значение!"); } |
12.
Запустите приложение.