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

лаба инфа 7

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

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

Реализация многофайлового проекта

Оглавление

1 Задание 3

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

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

2.2 Код программы 4

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

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

1 Задание

  1. Создать файл с расширением cpp, в котором разместить функции:

(1)

(2)

При этом нужно вычислить произведение значений функции y=f(x) при y<0 при изменении х на отрезке [-1,5;1,5] с шагом 0,15, где y=f(x) – функция (2).

  1. Создать заголовочный файл, в котором разместить прототипы функций (1) и (2).

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

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

  2. Функцию double Fun(double x) для расчета функции y=f(x).

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

  4. Функция вывода переменных в таблицу void VivodDGV(double x, double y, DataGridView^DGV).

  5. Функцию void Tabul(double x, double a, double b, double h, double& k, DataGridView^grid) для табулирования функции и вычисления произведения значений функции при выполнении определенных условий.

  6. Событийную функцию, в которой осуществляются вызовы функции ввода 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).

  7. Функцию 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.

Таким образом, наша программа работает полностью исправно.

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

  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)

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