Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Пример программы. //1.Пользуясь рекуррентной формулой yi=yi-1 + yi-3^2, где i=3,4,n,




 

//1.Пользуясь рекуррентной формулой yi=yi-1 + yi-3^2, где i=3,4,...n,

//для заданного значения n вычислить yn, если известны y0, y1, y2.

//2.Последовательность {an} задана равенствами:

// a1=0.5; an=n*(an-1+0.5).

// Вычислить предел произведения (1+1/a1)*...*(1+1/an).

// Вычисления закончить при |1/an| < eps.

#include<iostream.h>

#include<math.h>

#include<conio.h>

#include<stdlib.h>

#include<limits.h>

 

int recur1(int n, int y0, int y1, int y2) ;

int recur2(int n, int y0, int y1, int y2) ;

int recur3(int n, int y0, int y1, int y2) ;

float predel1(float eps) ;

float predel2(float eps) ;

float predel3(float eps) ;

 

int main()

{int var, n ;

int re1, re2, re3 ; //результаты решения первой задачи

float rez1, rez2, rez3 ; //результаты решения второй задачи

float eps ; //точность вычисления результата

float y0, y1, y2 ; //исходные данные для первой задачи

clrscr() ;

for(;;)

{

//Выбор вида действия

cout << " Вид действия:\n" ;

cout << " 1 - вычисление по рекуррентной формуле\n" ;

cout << " 2 - вычисление предела произведения\n" ;

cout << " 3 - завершение задачи\n" ;

cout << " Введите вид действия -> " ;

cin >> var ;

switch(var)

{case 1:

//Ввод исходных данных для первой задачи

cout << " Введите n -> " ;

cin >> n;

cout << " Введите y0, y1, y2 -> " ;

cin >> y0 >> y1 >> y2 ;

re1 = recur1(n, y0, y1, y2) ;

re2 = recur2(n, y0, y1, y2) ;

re3 = recur3(n, y0, y1, y2) ;

//Вывод результата

cout << " Для цикла WHILE результат = " << re1 << endl ;

cout << " Для цикла DO..WHILE результат= " << re2 << endl ;

cout << " Для цикла FOR результат = " << re3 << endl ;

break ;

case 2:

//Ввод исходных данных для второй задачи

cout << " Введите точность вычисления -> " ;

cin >> eps ;

rez1 = predel1(eps) ;

rez2 = predel2(eps) ;

rez3 = predel3(eps) ;

//Вывод результата

cout.precision(4) ;//число знаков после дес. точки

cout << " Для цикла WHILE результат =" << rez1 << endl ;

cout.precision(4) ;

cout << " Для цикла DO..WHILE результат=" << rez2 << endl ;

cout.precision(4) ;

cout << " Для цикла FOR результат =" << rez3 << endl ;

break ;

default: return 0 ;

}//switch

}//for

}

 

//вычисление значения рекуррентного выражения циклом while

int recur1(int n, int y0, int y1, int y2)

{int i = 3, y ;

while(i <= n)

{y = y2 + y0 * y0 ;

y0 = y1 ;

y1 = y2 ;

y2 = y ;

i++ ;

}

return y ;

}

 

//вычисление значения рекуррентного выражения циклом do..while

int recur2(int n, int y0, int y1, int y2)

{int i = 3, y ;

do

{y = y2 + y0 * y0 ;

y0 = y1 ;

y1 = y2 ;

y2 = y ;

i++ ;

}

while(i <= n) ;

return y ;

}

 

//вычисление значения рекуррентного выражения циклом for

int recur3(int n, int y0, int y1, int y2)

{int i, y ;

for(i = 3 ; i <= n ; i++)

{y = y2 + y0 * y0 ;

y0 = y1 ;

y1 = y2 ;

y2 = y ;

}

return y ;

}

 

//вычисление предела произведения циклом while

float predel1(float eps)

{float pr = 1, an = .5 ;

int n = 1 ;

while(fabs(1 / an) > eps)

{pr *= (1 + 1 / an) ;

n++ ;

an = n * (an + .5) ;

}

return pr ;

}

 

//вычисление предела произведения циклом do..while

float predel2(float eps)

{float an = .5, pr = 1 ;

int n = 1 ;

do

{pr *= (1 + 1 / an) ;

n++ ;

an = n * (an + .5) ;

}

while (fabs(1 / an) > eps) ;

return pr ;

}

 

//вычисление предела произведения циклом for

float predel3(float eps)

{float an = .5, pr = 1 + 1 / an ;

for(int n = 2 ; n < INT_MAX; n++)

{an = n * (an + .5) ;

if(fabs(1 / an) > eps) pr *= (1 + 1 / an) ;

else break ;

}

return pr ;

}

 



Поделиться:

Дата добавления: 2015-04-04; просмотров: 83; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты