Лабораторная работа №3
Программирование алгоритмов итеративных циклических структур
в Microsoft Visual Studio (C++)
Оглавление
1 Задание на лабораторную работу 3
2 Ход выполнения лабораторной работы 3
2.1 Формализация и уточнение задания 3
2.2 Разработка алгоритма решения задачи 4
Список используемых источников 9
Разработать программу в Microsoft Visual Studio (C++) для решения следующего уравнения, с точностью не менее 0,00001:
(1)
Сравнить результат со значением, полученным с помощью соответствующей встроенной функции.
Для этого необходимо:
- Разработать итеративную функцию void Expo(double x, double e, double& sum, DataGridView^ t);
- Разработать функции ввода/вывода (Vvod(), Vivod() и VivodDGV());
- Вывести результаты и сравнить со встроенной функцией exp().
Рекуррентная формула для формулы (1) следующим образом (формула (2)):
(2)
Для нахождения заданного члена последовательность используем формулу (3), где n – номер члена последовательности.
(3)
2.2 Разработка алгоритма решения задачи
Ниже представлены алгоритмы решения данной задачи, созданные с помощью средств Microsoft Visio (Рисунки 1 и 2):
Рисунок 1 – Алгоритм функции Expo() в Microsoft Visio
Рисунок 2 – Алгоритм событийной функции в Microsoft Visio
2.3 Разработка программы
Получившаяся программа в Microsoft Visual Studio (С++) представлена ниже:
Sourse.cpp
#include "Header.h"
#include <cmath>
using namespace System;
using namespace System::Windows::Forms;
void Expo(double x, double e, double& sum, DataGridView^ t)
{
double a, b;
double c = 1;
int n = 1;
double z;
sum = 1;
if (x == 0){
sum = 1;
VivodDGV(n, c, sum, abs(b - a), t);
}
else {
do {
a = c * (x / n);
b = a * (x / (n + 1));
sum = sum + a;
c = a;
VivodDGV(n, c, sum, abs(b - a), t);
n = n + 1;
if ((abs(b - a)) == 0) {
if (n > pow(10, 6)) {
z = e;
}
else {
z = 10000;
}
}
else {
z = abs(b - a);
}
} while (z > e);
}
Header.h
#pragma once
using namespace System::Windows::Forms;
double Vvod(TextBox^ t);
void Vivod(double x, TextBox^ t);
void VivodDGV(int n, double x, double y, double z, DataGridView^ DGV);
void Expo(double x, double e, double& sum, DataGridView^ t);
MyForm3.h
#pragma once
#include "Header.h"
namespace Laba {
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) {
Form^ g = this->Owner;
this->Hide();
g->Show();
g->Visible = true;
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
Application::Exit();
}
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
double x1 = Vvod(textBox1);
double e1 = Vvod(textBox2);
double sum1;
double sum2 = exp(x1);
Expo(x1, e1, sum1, dataGridView1);
Vivod(sum1, textBox3);
Vivod(sum2, textBox4);}
3.4 Результаты выполнения программы
Получившийся результат представлен на рисунке 3:
Рисунок 3 – Результат выполнения программы при х = 1
Получился результат 2,71828152557319
Результат полученный встроенной функцией 2,71828182845905
Ответы совпадают с точностью 0,00001
Вывод
Мы разработали программу и сравнили результат с встроенной функцией, ответы совпадают с заданной точностью.
Список используемых источников
- ГОСТ 7.32 – 2001. Издания. Отчет о научно-исследовательской работе. Структура и правила оформления. [Текст] - Введен ГОСТ 7.32-91; введ. 2006. – Минск: Межгос. Совет по стандартизации, метрологии и сертификации; М. : Изд-во стандартов, сор. 2001. – 3 с. – (система стандартов по информации библиотечному и издательскому делу).
- ГОСТ 19.701-90. Издания. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. — ГОСТ 19.002-80 ГОСТ 19.003-80; 04.03.2010. — Москва: Изд-во стандартов, 2010. — 22с. – (единая система программной документации)