Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МВ до ЛР КТтаП 1-1.doc
Скачиваний:
12
Добавлен:
26.11.2019
Размер:
1 Мб
Скачать
☆

2. Методичні вказівки виконання роботи

Написання програми для заданого варіанту задачі покажемо на пприкладв програми, яка різними циклічними операторами обчислює середнє значення додатних відліків вибраної користувачем функції із списку функцій на заданому інтервалі . Вікно програми показане на рис. 6.1

Рис. 6.1. Вікно програми для визначення середнього значення додатних відліків функції

У цій програмі для створення списку функцій застосований компонент ListBox, а для вибору виду циклу – три радіо-кнопки RadioButton, згруповані контейнерним компонентом GroupBox. Список функцій ; ; ; ; ; ; записаний в редакторі властивості Items компонента ListBox. Для введення кількості відліків застосований компонент NumericUpDown.

Основна частина тексту програми приведена нижче.

namespace WindAppAnalizFunc

{

public partial class Form1 : Form

{

double a, b;

double Sa;

int n;

public Form1()

{

InitializeComponent();

textBox1.Text = "0";

textBox2.Text = "5";

numericUpDown1.Value = 100;

radioButton1.Checked = true;

listBox1.SelectedIndex == 0;

}

private void button1_Click(object sender, EventArgs e)

{

try

{

InpData(out a, out b, out n);

}

catch

{

MessageBox.Show("Неправильно записане число", "Увага!");

return;

}

CalcSa(a, b, n, out Sa);

OutResult(a, b, Sa);

}

private void InpData(out double a, out double b, out int n)

{

a = Convert.ToDouble(textBox1.Text);

b = Convert.ToDouble(textBox2.Text);

n = Convert.ToInt32(numericUpDown1.Value);

}

private void CalcSa(double a, double b, int n, out double Sa)

{

if (radioButton1.Checked)

Sa = FuncFor(a, b, n);

else if (radioButton2.Checked)

Sa = FuncWhile(a, b, n);

else Sa = FuncDoWhile(a, b, n);

}

private double Fy(double x)

{

double y = 0;

switch (listBox1.SelectedIndex)

{

case 0: y = Math.Sin(x); break;

case 1: y = Math.Cos(x); break;

case 2: y = Math.Exp(x); break;

case 3: y = Math.Exp(-x * x / 2); break;

case 4: if (x != 0) y = Math.Sin(x) / x;

else y = 1; break;

case 5: y = Math.Sin(x) * x; break;

}

return y;

}

private double FuncFor(double a, double b, int n)

{

double Sy;

double y, dx; //x,

int k;

dx = (b - a) / (n - 1);

k = 0; //лічильник додатних відліків

Sy = 0;

for (double x = a; x <= b; x += dx)

{

y = Fy(x);

if (y > 0)

{

Sy = Sy + y;

k = k + 1;

}

}

return Sy / k;

}

private double FuncWhile(double a, double b, int n)

{

double Sy;

double x, y, dx;

int k;

dx = (b - a) / (n - 1);

x = a;

k = 0; //лічильник додатних відліків

Sy = 0;

while (x <= b)

{

y = Fy(x);

if (y > 0)

{

Sy = Sy + y;

k = k + 1;

}

x = x + dx;

}

return Sy / k;

}

private double FuncDoWhile(double a, double b, int n)

{

double Sy;

double x, y, dx;

int k; //лічильник додатних відліків

dx = (b - a) / (n - 1);

x = a;

k = 0;

Sy = 0;

do

{

y = Fy(x);

if (y > 0)

{

Sy = Sy + y;

k = k + 1;

}

x = x + dx;

}

while (x <= b);

return Sy / k;

}

private void OutResult(double a, double b, double Sa)

{

textBox4.AppendText(string.Format

("Середнє значення додатних відліків функції {0} "

+ " в інтервалі [{1}, {2}] дорівнює {3:f4} \n",

listBox1.SelectedItem, a, b, Sa));

}

private void button2_Click(object sender, EventArgs e)

{

Close();

}

}

}

3. Зміст звіту

  1. Номер, тема і мета лабораторної роботи.

  2. Стислі теоретичні відомості.

  3. Постановка задачі.

  4. Текст програми відповідно до завдання з коментарями та результатами.

  5. Висновки.