Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
18.01.2026
Размер:
133.99 Кб
Скачать

Министерство цифрового развития, Связи и Массовых Коммуникаций

Ордена Трудового Красного Знамени федерального государственное бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики» (МТУСИ)

Кафедра: «Информатика»

Лабораторная работа №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 в третьем.

Соседние файлы в папке 2 курс БСТ Лабораторные работы