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

лаба инфа 5

.docx
Скачиваний:
2
Добавлен:
04.03.2022
Размер:
322.63 Кб
Скачать

Лабораторная работа №5

Программирование алгоритмов разветвляющихся структур с нахождением максимального и минимального значений в программе Microsoft Visual Studio на языке программирования С++ на основе пользовательских функций

Оглавление

1 Задание 3

2 Ход выполнения лабораторной работы 3

2.1 Формализация и уточнение задания 3

2.2 Разработка блок-схемы 4

2.3 Код программы 7

2.4 Тестирование программы 9

Список использованных источников 10

1 Задание

Разработать проект в среде программирования Microsoft Visual Studio, в которой осуществляется программирование алгоритмов разветвляющихся структур с нахождением максимального и минимального значений в программе на языке программирования С++ на основе пользовательских функций

(1)

Для выполнения лабораторной работы следует разработать:

  1. Функцию ввода double Vvod(TextBox^t)

  2. Функцию void Chet(double x, double y, double a, double b, double &p) для расчета арифметического ветвления

  3. Функцию вывода void Vivod(double z, TextBox^t)

  4. Событийную функцию, в которой осуществляются вызовы функции ввода double Vvod(TextBox^t), пользовательской функции void Chet(double x, double y, double a, double b, double &p) и функции вывода void Vivod(double z, TextBox^t)

2 Ход выполнения лабораторной работы

2.1 Формализация и уточнение задания

Функция ввода: double Vvod(TextBox^t).

Функция вывода: void Vivod(double z, TextBox^t).

Пользовательская функция для расчета арифметического выражения: void Chet(double x, double y, double a, double b, double &p).

Переводим формулу (1) на язык программирования C++:

if (x>0)

{ if (x>y)

max=x;

else max=y; p=max;

}

else if ((-1<=x) && (x<=0)

{if (x>b)

min=b;

else min=x; p=min;

}

else { if ((x*x) > (a+b))

max=x*x;

else max=a+b; min=sin(a);

if (min > cos(b))

min=cos(b);

if (min > max)

min=max; p=min;

}

}

2.2 Разработка блок-схемы

Посторим блок-схему работы функции ввода (рисунок 1).

Рисунок 1 – Блок-схема функции ввода.

Разработаем блок-схему работы пользовательской функции (рисунок 2).

Рисунок 2 – Блок-схема пользовательской функции.

Разработаем блок-схему работы функции вывода (рисунок 3).

Рисунок 3 – Блок-схема функции вывода.

Разработаем блок-схему событийной функции (рисунок 4).

Рисунок 4 – Блок-схема событийной функции.

2.3 Код программы

Laboratornsrabots.cpp

#include "stdafx.h"

#include "Form1.h"

using namespace Laboratornsrabots;

[STAThreadAttribute]

int main(array<System::String ^> ^args)

{

// Включение визуальных эффектов Windows XP до создания каких-либо элементов управления

Application::EnableVisualStyles();

Application::SetCompatibleTextRenderingDefault(false);

// Создание главного окна и его запуск

Application::Run(gcnew Form1());

return 0;

}

Form1.h

#pragma once

#include "form2.h"

#include "form3.h"

namespace Laboratornsrabots {

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

<…>

#pragma endregion

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

form2^ f=gcnew form2();

f->Owner=this;

f->Show();

//f->ShowDialog();

this->Hide();

}

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {

form3^ f=gcnew form3();

f->Owner=this;

f->Show();

//f->ShowDialog();

this->Hide();

}

};

}

Form3.h

#pragma once

#define _USE_MATH_DEFINES

#include <math.h>

namespace Laboratornsrabots {

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

<…>

#pragma endregion

double Vvod(TextBox^t)

{

return Convert::ToDouble(t->Text);

}

void Vivod(double z, TextBox^t)

{

t->Text=Convert::ToString(z);

}

void Chet(double x, double y, double a, double b, double &p)

{

double max, min;

if (x >0)

{

if (y >x)

max=y;

else max=x;

p=max;

}

else

if ((-1<=x) && (x<=0))

{

if (x>b)

min=b;

else min=x;

p=min;

}

else

{

if ((x*x) > (a+b))

max=x*x;

else max=a+b;

min=sin(a);

if (min > cos(b))

min=cos(b);

if (min > max)

min=max;

p=min;

}

}

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

double x1=Vvod(textBox2);

double y1=Vvod(textBox3);

double a1=Vvod(textBox1);

double b1=Vvod(textBox4);

double p1;

Chet(x1,y1,b1,a1,p1);

Vivod(p1,textBox5);

}

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {

Owner->Show();

this->Close();

}

};

}

2.4 Тестирование программы

Исходные данные: y=2, a=3, b=4.

Проверка первого промежутка(х>0). Ниже приведены результаты в Visual Studio(рисунок 1) и Exel(рисунок 2).

Рисунок 1 – Результаты вычисления первого промежутка в Visual Studio

Рисунок 2 – Результат вычисления первого промежутка в Exel

Как мы видим, результаты совпадают.

Теперь возьмем х из второго промежутка (-1<=x<=0). Результаты приведены на рисунках 3 и 4.

Рисунок 3 - Результаты вычисления второго промежутка в Visual Studio

Рисунок 4 - Результат вычисления второго промежутка в Exel

Как мы можем заметить, результаты совпадают.

Теперь проверим третий промежуток. На рисунке 5 и 6 приведены результаты работ программ.

Рисунок 5 - Результаты вычисления третьего промежутка в Visual Studio

Рисунок 6 - Результат вычисления третьего промежутка в Exel

Таким образом, результаты двух программ совпали.

Список использованных источников

  1. ГОСТ 7.1-2001 СИБИД. Библиографическая запись. Библиографическое описание. Общие требования и правила составления [электронный ресурс] URL: https://internet-law.ru/gosts/gost/1560 (дата обращения 03.11.2019)

  2. ГОСТ 7.32-2001 СИБИД. Отчет о научно-исследовательской работе. Структура и правила оформления (с Изменением N 1) [электронный ресурс] URL: http://docs.cntd.ru/document/gost-7-32-2001-sibid (дата обращения 03.11.2019)

Соседние файлы в предмете Информатика