лаба инфа 5
.docx
Лабораторная работа №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)
Для выполнения лабораторной работы следует разработать:
Функцию ввода double Vvod(TextBox^t)
Функцию void Chet(double x, double y, double a, double b, double &p) для расчета арифметического ветвления
Функцию вывода void Vivod(double z, TextBox^t)
Событийную функцию, в которой осуществляются вызовы функции ввода 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
Таким образом, результаты двух программ совпали.
Список использованных источников
ГОСТ 7.1-2001 СИБИД. Библиографическая запись. Библиографическое описание. Общие требования и правила составления [электронный ресурс] URL: https://internet-law.ru/gosts/gost/1560 (дата обращения 03.11.2019)
ГОСТ 7.32-2001 СИБИД. Отчет о научно-исследовательской работе. Структура и правила оформления (с Изменением N 1) [электронный ресурс] URL: http://docs.cntd.ru/document/gost-7-32-2001-sibid (дата обращения 03.11.2019)