лаба инфа 7
.docx
Лабораторная работа №7
Реализация многофайлового проекта
Оглавление
1 Задание 3
2 Ход выполнения лабораторной работы 3
2.1 Формализация и уточнение задания 3
2.2 Код программы 4
2.4 Тестирование программы 6
Список использованных источников 10
1 Задание
Создать файл с расширением cpp, в котором разместить функции:
(1)
(2)
При этом нужно вычислить произведение значений функции y=f(x) при y<0 при изменении х на отрезке [-1,5;1,5] с шагом 0,15, где y=f(x) – функция (2).
Создать заголовочный файл, в котором разместить прототипы функций (1) и (2).
Для выполнения лабораторной работы следует разработать:
Функцию ввода 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), пользовательской функции void Chet(double x, double y, double a, double b, double &p).
Функцию void Chet(double x, double y, double a, double b, double &p) для расчета арифметического ветвления.
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).
Пользовательская функция для расчета арифметического выражения: 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) на язык программирования C++:
y=pow(x,8)-0.4*pow(x,3)-1.24;
2.2 Код программы
MyForm4.cpp
#include "MyForm4.h"
#include "MyForm2.h"
#include <math.h>
#include "Header.h"
using namespace Laboratornsrabots;
using namespace System;
using namespace System::Windows::Forms;
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)
{
DGV->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, grid);
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);
}
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;
}
}
Header.h
#pragma once
using namespace System::Windows::Forms;
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);
double Vvod(TextBox^ t);
void Vivod(double z, TextBox^ t);
void Chet(double x, double y, double a, double b, double& p);
MyForm4.h
#pragma once
#include "Header.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) {
double x1 = Vvod(textBox1);
double y1 = Vvod(textBox2);
double a1 = Vvod(textBox3);
double b1 = Vvod(textBox4);
double h1 = Vvod(textBox5);
double a12 = Vvod(textBox6);
double b12 = Vvod(textBox7);
double p1, k1,x12;
Chet(x1, y1, b1, a1, p1);
Tabul(x12, a12, b12, h1, k1, dataGridView1);
Vivod(k1, textBox8);
Vivod(p1, textBox9);
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
Owner->Show();
this->Close();
}
};
}
2.4 Тестирование программы
Для начала проведем проверку работы программы для осуществления расчета формулы (1). Для этого введем в исходные данные: x=1, y=2, a=3, b=4. Результаты работы с данными значениями приведет на рисунке 1.
Рисунок 1 – Результаты работы программы с х из первого диапазона.
Проверив значение функции р в данной программе с предыдущей версией (рисунок 2), мы видим одинаковые результаты.
Рисунок 2 – Результаты вычисления первого промежутка в Visual Studio в лабораторной работе №5.
Теперь изменим х в пределах второго диапазона: х=-0,5. Результаты работы при этих данных приведены на рисунке 3.
Рисунок 3 – Результаты работы программы во втором диапазоне х.
Проверив значение функции р в данной программе с предыдущей версией (рисунок 4), мы видим одинаковые результаты.
Рисунок 4 - Результаты вычисления второго промежутка в Visual Studio в лабораторной работе №5.
Теперь возьмем х=-2. Тогда результаты работы мы видим на рисунке 5.
Рисунок 5 – Результаты работы программы в третьем диапазоне х.
Проверив значение функции р в данной программе с предыдущей версией (рисунок 6), мы видим одинаковые результаты.
Рисунок 6 - Результаты вычисления третьего промежутка в Visual Studio в лабораторной работе №5.
Проведем тестирование работы табулирования функции. Результаты приведены на рисунке 7.
Рисунок 7 – Табулирование функции.
Сравнив с результатами в прошлой лабораторной работе №6 (рисунок 8 и рисунок 9), мы видим, что они полностью совпадают.
Рисунок 8 – Результаты табулирования в лабораторной работе №6.
Рисунок 9 – Результат вычисления произведения значений функции в лабораторной работе №6.
Таким образом, наша программа работает полностью исправно.
Список использованных источников
ГОСТ 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)