Операторы цикла: вычисления с заданной точностью



 

Цель лабораторной работы: изучение концепций и освоение технологии процедурного программирования, приобретение навыков процедурного программирования на языке 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 вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-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 вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï < e.

4.

Вычислить предел последовательности {Yn} при n ® , где Y0=0, а Yn вычисляется по формуле:

 n = 1, 2, 3,…

Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï < e.

5.

Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:

Yn = 0.352 * Yn-1 + cos(π/2 + Yn-3); n = 3, 4, 5,…

Значения Y0, Y1, Y2 и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï < e.

6.

2) Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:

 n = 3, 4, 5,…

Значения Y0, Y1, Y2 и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï < e.

 


7.

Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:

 n = 3, 4, 5,…

Значения Y0, Y1, Y2 и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï < e.

8.

Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:

 n = 3, 4, 5,…

Значения Y0, Y1, Y2 и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï < e.

9.

Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:

 n = 3, 4, 5,…

Значения Y0, Y1, Y2 и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï < e.

10.

Вычислить предел последовательности {Yn} при n , где Yn вычисляется по формулам:

 n = 2, 3, 4…

Значение X (0 ≤ X < 1) и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-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 вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-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, при котором |XnXn-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, при котором |XnXn-1| < ε.

15.

Вычислить предел последовательности {Yn} при n  ∞, где Yn вычисляется по формуле:

; n = 1, 2, 3,…

Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï<e.

16.

Вычислить предел последовательности {Yn} при n  ∞, где Yn вычисляется по формуле:

; n = 1, 2, 3,…

Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï<e.

17.

Вычислить предел последовательности {Yn} при n  ∞, где Yn вычисляется по формуле:

; n = 1, 2, 3,…

Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï<e.

18.

Вычислить предел последовательности {Yn} при n  ∞, где Yn вычисляется по формуле:

; n = 1, 2, 3,...

Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï<e.

 


19.

Вычислить предел последовательности {Yn} при n  ∞, где Yn вычисляется по формуле:

; n = 1, 2, 3,…

Значение A и точность вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï < e.

20.

Вычислить предел последовательности {Yn} при n  ∞, где Yn вычисляется по формуле:

; n = 1, 2, 3,…

Значение точности вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï < e.

21.

Вычислить предел последовательности {Yn} при n  ∞, где Yn вычисляется по формуле:

; n = 1, 2, 3,…

Значение точности вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï < e.

22.

Вычислить предел последовательности {Yn} при n  ∞, где Yn вычисляется по формуле:

; n = 1, 2, 3,…

Значение точности вычисления e вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï < e.

23.

Вычислить предел последовательности {Yn} при n  ∞, где Yn вычисляется по формуле:

; n = 1, 2, 3,…

Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï<e.

24.

Вычислить предел последовательности {Yn} при n  ∞, где Yn вычисляется по формуле:

; n = 1, 2, 3,…

Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï<e.


25.

Вычислить предел последовательности {Yn} при n  ∞, где Yn вычисляется по формуле:

; n = 1, 2, 3,…

Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï<e.

26.

Вычислить предел последовательности {Yn} при n  ∞, где Yn вычисляется по формуле:

; n = 1, 2, 3,…

Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-1ï<e.

27.

Вычислить предел последовательности {Yn} при n  ∞, где Yn вычисляется по формуле:

; n = 1, 2, 3,…

Значение точности вычисления e вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYnYn-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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!