Вы находитесь на странице: 1из 5

Федеральное агентство связи

Ордена Трудового Красного знамени федеральное государственное


бюджетное
Образовательное учреждение высшего образования
“Московский технический университет связи и информатики”

Кафедра информатики

Лабораторная работа № 14
««Программирование алгоритмов итеративных циклических структур»

Выполнил: студент гр. БИН1902 Лепко Е.А.


Проверил: Загвоздкина А.В.

Москва 2019
Общее задание к лабораторной работе:
1) Изучите вопросы программирование алгоритмов итеративных
циклических структур.
2) Выберите вариант задания из таблицы 14.3-1.
3) Проведите формализацию поставленной задачи.
4) Решите задачу вашего индивидуального задания, используя разработанные
функции пользователя.
Для этого разработайте схемы алгоритмов и программные коды следующих
функций:
· функции решения, использующей итеративную циклическую структуру со
страховкой от «зацикливания» согласно вашему индивидуальному заданию.
Предусмотрите в ней вывод промежуточных вычислений с указанием номера
итерации и значения вычисляемого члена бесконечной последовательности
или корня уравнения, а также, если требуется, вызовы других функций,
необходимых для решения вашей задачи;
· программный код функции ввода исходных данных;
· программный код функции вывода результатов;
· программный код главной функции main(), которая вызывает описанные
выше функции для решения поставленной задачи.
5) Создайте консольный проект, содержащий 3 раздельно
откомпилированных файла:
· файл, содержащий функцию ввода исходных данных и функцию вывода
результатов;
· файл с разработанными согласно п.4. функциями;
· файл с главной функцией, которая должна содержать только операторы
вызова пользовательских функций (ввода, функции решения задачи и
вывода), причем обмен данными между функциями должен осуществляться
через параметры, без использования глобальных переменных.
6) Выполните проект и получите результаты.
7) Докажите правильность полученных результатов.
Индивидуальный вариант задания (Рисунок 1):

Рисунок 1 –Вариант 14.


Выполнение работы:
 x- текущее приближение к вычисления корня.
 A – предыдущее приближение к вычислению корня.
 n- номер итерации, совпадающий с номером текущего приближения к
корню;
Будем считать, что заданная точность ε обеспечена, если модуль разности
между текущим и предыдущим значениями корня меньше точности ε, то есть
для нашего случая |x-A| < ε.
Для решения поставленной задачи необходимо реализовать процедуру
resh(), которая в качестве входных параметров получает начальное
значение x0=0.5, точность ε=10−6 и максимальное число итераций. Результатами
работы процедуры являются:
1) число итераций n, которое потребовалось для вычисления корня с заданной
точностью.
2) Приближенное значение √ 2 при n итераций
Схема алгоритма Resh() (Рисунок 2):

Рисунок 2 – Схема алгоритма Resh() для вычисления приближенного значения


корня из двух.
Код программы:
Main.cpp
#include <iostream>
void GetX(double& x0,double& E,int& MaxN);
void resh(double x0 ,double E,double MaxN,int& n);
int main()
{
double x0, E;
int MaxN,n;
GetX(x0,E,MaxN);
resh(x0 ,E,MaxN,n);
system("PAUSE");
return 0;
}
GetX.cpp
#include <iostream>
using namespace std;
void GetX(double& x0,double& E,int& MaxN)
{
setlocale(LC_ALL,"rus");
cout<<"Введите начальное приближение "<<endl;
cin>>x0;
cout<<endl<<"Введите необходимую точность "<<endl;
cin>>E;
cout<<endl<<"Ввкдите максимальное число итераций"<<endl;
cin>>MaxN;
}
Resh.cpp
#include <cmath>
#include <iostream>
using namespace std;
void resh(double x0,double E,double MaxN,int& n)
{
double A,x;// предыдущее и текущее значение последовательности
n=1;
x=x0;
cout<<"\t Вычисление членов послеводательности:"<<endl;
cout<<"\t номер \t приближенное значение x"<<endl;
do
{
A=x;
x=1/(2+A);
n++;
cout<<'\t'<<n<<'\t'<<'\t'<<x++<<endl;
}while(abs(x-A)>=E && n<MaxN);
}
Результат программы(Рисунок 3)
Рисунок 3- Вычисление с заданной точностью √ 2
Доказательство правильности:
Создав программу, вычисляющую √ 2в виде математического выражения
x=20.5-1, можно получить результат совпадающий с полученным в лабораторной
задаче (Рисунок 4)
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double x;
x=pow(2,0.5)-1;
cout<<x<<endl;
system("PAUSE");
return 0;
}

Рисунок 4 – результат проверки данной программы.

Вам также может понравиться