лаба инфа 6
.docx
Лабораторная работа №6
Табулирование функции в программе Microsoft Visual Studio на языке программирования С++ на основе пользовательских функций
Оглавление
1 Задание 3
2 Ход выполнения лабораторной работы 3
2.1 Формализация и уточнение задания 3
2.2 Разработка блок-схемы 3
2.3 Код программы 6
2.4 Тестирование программы 8
Список использованных источников 10
1 Задание
1)Разработать проект в среде программирования Microsoft Visual Studio, в которой осуществляется табулирование функции на языке программирования С++ на основе пользовательских функций
2) Построить таблицу и вычислить произведение значений функции y=f(x) при y<0 при изменении х на отрезке [-1,5;1,5] с шагом 0,15
(1)
Для выполнения лабораторной работы следует разработать:
Функцию ввода double Vvod(TextBox^t)
Функцию double Fun(double x) для расчета функции y=f(x)
Функцию вывода void Vivod(double z, TextBox^t)
Функция вывода переменных в таблицу void VivodDGV(double x, double y, DataGridView^DGV)
Функцию void Tabul(double x, double a, double b, double h, double& k, DataGridView^grid) для табулирования функции и вычисления произведения значений функции при выполении определенных условий
Событийную функцию, в которой осуществляются вызовы функции ввода double Vvod(TextBox^t), пользовательской функции double Fun(double x), функции вывода переменных в таблицу void VivodDGV(double x, double y, DataGridView^DGV), пользовательской функции void Tabul(double x, double a, double b, double h, double& k, DataGridView^grid) и функции вывода void Vivod(double z, TextBox^t)
2 Ход выполнения лабораторной работы
2.1 Формализация и уточнение задания
Функция ввода: double Vvod(TextBox^t).
Функция вывода: void Vivod(double z, TextBox^t).
Пользовательская функция для расчета функции: double Fun(double x).
Пользовательская функция для табулирования функции: void Tabul(double x, double a, double b, double h, double& k, DataGridView^grid).
Функция вывода данных в таблицу: void VivodDGV(double x, double y, DataGridView^DGV).
Переводим формулу (1) на язык программирования C++:
y=pow(x,8)-0.4*pow(x,3)-1.24;
2.2 Разработка блок-схемы
Посторим блок-схему работы функции ввода (рисунок 1).
Рисунок 1 – Блок-схема функции ввода.
Разработаем блок-схему работы пользовательской функции (рисунок 2).
Рисунок 2 – Блок-схема пользовательской функции.
Разработаем блок-схему работы функции табулирования (рисунок 3).
Рисунок 3 – Функция табулирования функции
Разработаем блок-схему работы функции вывода данных в таблицу (рисунок 4).
Рисунок 4 – Функция вывода данных в таблицу.
Разработаем блок-схему работы функции вывода (рисунок 5).
Рисунок 5 – Блок-схема функции вывода.
Разработаем блок-схему событийной функции (рисунок 6).
Рисунок 6 – Блок-схема событийной функции.
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"
#include "form4.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();
}
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
form4^ f=gcnew form4();
f->Owner=this;
f->Show();
//f->ShowDialog();
this->Hide();
}
};
}
Form4.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 Fun(double x)
{
double y=pow(x,8)-0.4*pow(x,3)-1.24;
return y;
}
void VivodDGV(double x, double y, DataGridView^DGV)
{
dataGridView1->ColumnCount=2;
DGV->Rows->Add(x,y);
}
void Tabul(double x, double a, double b, double h, double& k, DataGridView^grid)
{
x=a;
double y;
int n = Convert::ToInt32(((b-a)/h)+1);
k=1;
for (int i=1; i<=n; i++)
{
y=Fun(x);
VivodDGV(x,y, dataGridView1);
if (y<0)
k=k*y;
x=x+h;
}
}
double Vvod(TextBox^t)
{
return Convert::ToDouble(t->Text);
}
void Vivod(double z, TextBox^t)
{
t->Text=Convert::ToString(z);
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
Owner->Show();
this->Close();
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
double k1, x1;
double h1=Vvod(textBox2);
double a1=Vvod(textBox3);
double b1=Vvod(textBox4);
Tabul(x1,a1,b1,h1,k1, dataGridView1);
Vivod(k1, textBox5);
}
};
}
2.4 Тестирование программы
Исходные данные: h=0,15, a=-1,5, b=1,5.
Результаты табулирования приведены на рисунке 1.
Рисунок 1 – Результаты табулирования
Результат вычисления произведения значений функции представлен на рисунке 2.
Рисунок 2 – Результат вычисления произведения значений функции
Сравнив с результатами калькуляторы(рисунок 3), мы видим, что они совпадают.
Рисунок 3 – Результаты вычисления произведения значений функции на калькуляторе
Список использованных источников
ГОСТ 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)