Операторы цикла: вычисления с заданной точностью
Цель лабораторной работы: изучение концепций и освоение технологии процедурного программирования, приобретение навыков процедурного программирования на языке C/C++ циклических вычислений.
Задание на программирование: используя технологию процедурного программирования разработать программу решения индивидуальной задачи тремя видами циклических управляющих структур: Цикл - Пока (с предусловием), Цикл - До (с постусловием), Цикл - Для (с параметром).
Порядок выполнения работы:
1) Получить у преподавателя индивидуальное задание. Выполнить постановку задачи: сформулировать условие, определить входные и выходные данные.
2) Разработать математическую модель.
3) Построить схему алгоритма, последовательно используя для решения задачи все три циклические управляющие структуры (операторы while, do…while, for). Каждое решение должно быть реализовано в виде отдельной функции.
При этом:
- запрещается использовать оператор if для проверки условия входа в циклы и в качестве одного из операторов тела цикла;
- в случаях, когда количество исполнений операторов тела цикла заранее определить нельзя, во избежание зацикливания необходимо предусмотреть контроль числа выполненных итераций с принудительным выходом из оператора цикла.
4) Составить программу на языке C/C++.
5) Входные данныевводить с клавиатуры по запросу.
6) Вывод результатов должен осуществляться в функции main(). Выходные данные выводить на экран в развернутой форме с пояснениями.
|
|
7) Использовать стандартные потоковые объекты ввода/вывода cin и cout.
8) Проверить и продемонстрировать преподавателю работу программы на полном наборе тестов, в том числе с ошибочными входными данными.
9) Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, схема алгоритма решения, текст программы, контрольные примеры.
Варианты индивидуальных заданий
1.
Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:
Yn = 0.25 sin(Yn-1) + cos(Yn-3); n = 3, 4, 5,…
Значения Y0, Y1, Y2 и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn - Yn-1ï < e.
2.
Вычислить предел последовательности {Yn} при n ® ∞, где Yn вычисляется по формуле:
Yn = 0.3 sin(Yn-1) + Yn-3; n = 3,.4, 5,...
Значения Y0, Y1, Y2 и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï < e.
3.
Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:
Yn=0.1 tg (Yn-1) + 0.3 tg (Yn-3); n = 3, 4, 5,...
Значения Y0, Y1, Y2 и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï < e.
|
|
4.
Вычислить предел последовательности {Yn} при n ® , где Y0=0, а Yn вычисляется по формуле:
n = 1, 2, 3,…
Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï < e.
5.
Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:
Yn = 0.352 * Yn-1 + cos(π/2 + Yn-3); n = 3, 4, 5,…
Значения Y0, Y1, Y2 и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï < e.
6.
2) Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:
n = 3, 4, 5,…
Значения Y0, Y1, Y2 и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï < e.
7.
Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:
n = 3, 4, 5,…
Значения Y0, Y1, Y2 и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï < e.
8.
Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:
n = 3, 4, 5,…
Значения Y0, Y1, Y2 и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï < e.
9.
Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:
|
|
n = 3, 4, 5,…
Значения Y0, Y1, Y2 и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï < e.
10.
Вычислить предел последовательности {Yn} при n , где Yn вычисляется по формулам:
n = 2, 3, 4…
Значение X (0 ≤ X < 1) и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï < e.
11.
Вычислить предел последовательности {Yn} при n , где Yn вычисляется по формулам:
Y1 = X; Yn = Yn-1(2 – X*Yn-1); n = 2, 3, 4,…
Значение X (0 < X ≤ 1.4) и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï < e.
12.
Найти предел произведения для последовательности {Yn}, пользуясь рекуррентной формулой
Y1 = 1; Yn = n*(Yn-1 + 1); n = 2, 3, 4,…
Вычисления прекратить при выполнении условия |Yn - Yn-1| <ε.
13.
Вычислить - корень k-ой степени из положительного числа A, пользуясь последовательным приближением
n = 1, 2, 3,…
Значение точности вычисления e вводится с клавиатуры. За корень принять такое Xn, при котором |Xn – Xn-1| < ε.
14.
Для приближенного решения уравнения Кеплера X-q*sin(X)=m, 0 < q < 1
полагают X0 = m, X1 = m + q*sin(X0),…, Xn = m + q*sin(Xn-1),…
|
|
Значения m и q и точность вычисления e вводятся с клавиатуры. Найти решение уравнения Кеплера, принимая за него такое Xn, при котором |Xn – Xn-1| < ε.
15.
Вычислить предел последовательности {Yn} при n ∞, где Yn вычисляется по формуле:
; n = 1, 2, 3,…
Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.
16.
Вычислить предел последовательности {Yn} при n ∞, где Yn вычисляется по формуле:
; n = 1, 2, 3,…
Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.
17.
Вычислить предел последовательности {Yn} при n ∞, где Yn вычисляется по формуле:
; n = 1, 2, 3,…
Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.
18.
Вычислить предел последовательности {Yn} при n ∞, где Yn вычисляется по формуле:
; n = 1, 2, 3,...
Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.
19.
Вычислить предел последовательности {Yn} при n ∞, где Yn вычисляется по формуле:
; n = 1, 2, 3,…
Значение A и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï < e.
20.
Вычислить предел последовательности {Yn} при n ∞, где Yn вычисляется по формуле:
; n = 1, 2, 3,…
Значение точности вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï < e.
21.
Вычислить предел последовательности {Yn} при n ∞, где Yn вычисляется по формуле:
; n = 1, 2, 3,…
Значение точности вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï < e.
22.
Вычислить предел последовательности {Yn} при n ∞, где Yn вычисляется по формуле:
; n = 1, 2, 3,…
Значение точности вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï < e.
23.
Вычислить предел последовательности {Yn} при n ∞, где Yn вычисляется по формуле:
; n = 1, 2, 3,…
Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.
24.
Вычислить предел последовательности {Yn} при n ∞, где Yn вычисляется по формуле:
; n = 1, 2, 3,…
Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.
25.
Вычислить предел последовательности {Yn} при n ∞, где Yn вычисляется по формуле:
; n = 1, 2, 3,…
Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.
26.
Вычислить предел последовательности {Yn} при n ∞, где Yn вычисляется по формуле:
; n = 1, 2, 3,…
Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.
27.
Вычислить предел последовательности {Yn} при n ∞, где Yn вычисляется по формуле:
; n = 1, 2, 3,…
Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.
Пример программы
// Циклические вычисления с заданной точностью. Пример.
// Последовательность {an} задана равенствами:
// a1=0.5; an=1/(n*(an-1+0.3)).
// Вычислить предел последовательности.
// Вычисления закончить при |an-an-1| < eps.
// Вывести результат и номер последнего значения.
#include<iostream.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
#include<limits.h>
float predel1(float eps, int&n) ;
float predel2(float eps, int&n) ;
float predel3(float eps, int&n) ;
//main_begin______________________________________________________________
int main()
{int var, n1, n2, n3 ;
float rez1, rez2, rez3 ; //результаты расчетов
float eps ; //точность вычисления
clrscr() ;
for(;;)
{//Ввод исходных данных
cout << " Вид действия:" << endl ;
cout << " 1 - вычисление предела последовательности" << endl ;
cout << " 2 - завершение задачи" << endl ;
cout << " Введите вид действия -> " ;
cin >> var ;
switch(var)
{case 1:
//Ввод исходных данных
cout << " Введите точность вычисления -> " ;
cin >> eps ;
if(eps <= 0 || eps > .1)
{cout << "Ошибка ввода. Значение eps д.б. >0 и <=0.1" ;
cout << "\nНажмите Enter для продолжения->\n" ;
getch() ;
continue ;
}
rez1 = predel1(eps, n1 = 2) ;
rez2 = predel2(eps, n2 = 1) ;
rez3 = predel3(eps, n3 = 2) ;
//Вывод результата
cout.precision(4) ; //число знаков после дес. точки
cout << "Для цикла WHILE рез. = " << rez1 << " n = " << n1 << endl ;
cout << "Для цикла DO..WHILE рез.= " << rez2 << " n = " << n2 << endl ;
cout << "Для цикла FOR рез. = " << rez3 << " n = " << n3 << endl ;
break ;
default: return 0 ;
}//switch
}//for
}
//main_end________________________________________________________________
//predel1_beg_____________________________________________________________
//вычисление предела последовательности циклом while
float predel1(float eps, int&n)
{float a1 = .5,
an = 1 / (n * (a1 + .3)) ;
while(fabs(an - a1) > eps && n < INT_MAX)
{a1 = an ;
n++ ;
an = 1 / (n * (a1 + .3)) ;
}
return an ;
}
//predel1_end_____________________________________________________________
//predel2_beg_____________________________________________________________
//вычисление предела последовательности циклом do..while
float predel2(float eps, int&n)
{float an = .5, a1 ;
do
{a1 = an ;
n++ ;
an = 1 / (n * (a1 + .3)) ;
}
while (fabs(an - a1) > eps && n < INT_MAX) ;
return an ;
}
//predel2_end_____________________________________________________________
//predel3_beg_____________________________________________________________
//вычисление предела последовательности циклом for
float predel3(float eps, int&n)
{float a1 = .5, an = 1 / (n * (a1 + .3)) ;
for( ; fabs(an - a1) > eps && n < INT_MAX ; )
{a1 = an ;
n++ ;
an = 1 / (n * (a1 + .3)) ;
}
return an ;
}
//predel3_end_____________________________________________________________
Дата добавления: 2018-04-05; просмотров: 656; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!