2 курс БСТ Лабораторные работы / TP_Laboratornaya_rabota_5
.docxМинистерство цифрового развития, Связи и Массовых Коммуникаций
Ордена Трудового Красного Знамени федерального государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики» (МТУСИ)
Кафедра: «Информатика»
Лабораторная работа №5 «Программирование алгоритмов регулярных циклических структур»
Вариант 9
Проверил: доцент Аляпкин В.В.
Москва 2023 г.
Постановка задачи
Создать
приложение, которое будет рассчитывать
все значения функции
при изменениях x на отрезке [0,1;1,5] с шагом
0,1. Полученные значения функции и заданные
значения аргумента должны выводиться
на экран. Кроме того, приложение должно
уметь находить и выходить на экран
максимальное значения заданной функции.
Графический интерфейс
Рисунок 1. Интерфейс программы
Блок-схемы алгоритмов
Рисунок 2. Алгоритм программы
Рисунок 3. Алгоритм процедуры fu()
Программный код
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TP_LabRab_5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
Close();
}
//ввод данных в Textbox
double vvod(TextBox text)
{
return Convert.ToDouble(text.Text);
}
//вывод результата в Textbox
void vyvod(TextBox text, double rez)
{
text.Text = Convert.ToString(rez);
}
//вывод результата в Listbox
void inlist(ListBox List, double z)
{
List.Items.Add(z.ToString());
}
//вычисление функции
double fu(double x)
{
return x*Math.Exp(-x);
}
private void button1_Click(object sender, EventArgs e)
{
double a = vvod(textBox1),
b = vvod(textBox2),
h = vvod(textBox3);
int i, count;
double x = a;
double y = fu(x);
double max = y;
count = Convert.ToInt32((b - a) / h);
for (i = 0; i <= count; i++)
{
y = fu(x);
inlist(listBox1, x);
inlist(listBox2, y);
if (y > max) max = y;
x = x + h;
}
vyvod(textBox4, max);
}
}
}
Таблица результатов
Таблица 1. Результаты вычислений с заданными значениями аргумента
x |
y |
0,1 |
0,090483741803596 |
0,2 |
0,163746150615596 |
0,3 |
0,222245466204515 |
0,4 |
0,268128018414256 |
0,5 |
0,303265329856317 |
0,6 |
0,329286981656416 |
0,7 |
0,347609712653987 |
0,8 |
0,359463171293777 |
0,9 |
0,365912693766539 |
1 |
0,367879441171442 |
1,1 |
0,366158192067888 |
1,2 |
0,361433064294643 |
1,3 |
0,354291330944216 |
1,4 |
0,345235749518249 |
1,5 |
0,334695240222645 |
Тесты
В качестве первого теста возьмем значения аргумента x из условия задачи согласно варианту: a = 0,1, b = 1,5, h = 0,1.
Рисунок 4. Результаты первого теста
Как видно из рисунка 4, программа успешно выводит значения аргумента и функции в заданном диапазоне, а также корректно подсчитывает максимальное значение функции. В данном случае оно равно 0,367879441171442 и соответствует x = 1.
Для второго теста возьмем диапазон отрицательных значений аргумента, а также изменим шаг: a = -10, b = -1, h = 1.
Рисунок 5. Результаты второго теста
Для третьего теста возьмем такой диапазон значений, чтобы аргумент x переходил через ноль, а также вновь изменим значение шага и сделаем его отрицательным: a = 4, b = -4, h = -0,5.
Рисунок 6. Результаты третьего теста
Как и в случае с первым тестом, во время второго и третьего тестов программа успешно вывела значения аргумента и функции в заданном диапазоне, а также корректно подсчитала максимальное значение функции: -2,71828182845905 во втором тесте и 0,367879441171442 в третьем.
