Студопедия

Главная страница Случайная страница

Разделы сайта

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






Пример программы. //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);

void okno(int x1, int y1, int x2, int y2, int colfona, int colbukv);

 

void main()

{int var, n, re1, re2, re3;

float rez1, rez2, rez3, z, eps, y0, y1, y2;

textbackground(BLACK);

textcolor(15);

clrscr();

for(;;)

{okno(20, 1, 60, 6, 1, 15);

//Ввод исходных данных

cprintf(" \n Вид действия: \n\r");

cprintf(" 1 - вычисление по рекуррентной формуле\n\r");

cprintf(" 2 - вычисление предела произведения\n\r");

cprintf(" 3 - завершение задачи\n\r");

cprintf(" Введите вид действия -> ");

cin > > var;

switch(var)

{case 1: okno(1, 10, 37, 15, 2, 15);

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

cprintf(" Введите n -> ");

cin > > n;

cprintf(" Введите 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);

okno(40, 10, 80, 15, 4, 15);

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

cprintf(" Для цикла WHILE результат =%d\n\r", re1);

cprintf(" Для цикла DO..WHILE результат=%d\n\r", re2);

cprintf(" Для цикла FOR результат =%d\n\r", re3);

break;

case 2: okno(1, 10, 37, 15, 2, 15);

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

cprintf(" Введите точность вычисления\n\r");

cin > > eps;

rez1 = predel1(eps);

rez2 = predel2(eps);

rez3 = predel3(eps);

okno(40, 10, 80, 15, 4, 15);

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

cprintf(" Для цикла WHILE результат =%f\n\r", rez1);

cprintf(" Для цикла DO..WHILE результат=%f\n\r", rez2);

cprintf(" Для цикла FOR результат =%f\n\r", rez3);

break;

default: abort();

}//switch

}//for

}

 

//Вывод окна на экран

void okno(int x1, int y1, int x2, int y2, int colfona, int colbukv)

{window(x1, y1, x2, y2);

textbackground(colfona);

textcolor(colbukv);

clrscr();

}

 

//вычисление значения рекуррентного выражения циклом 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 = 0.5;

int n = 1;

while(fabs(1 / an) > eps)

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

n++;

an = n * (an + 1);

}

return(pr);

}

 

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

float predel2(float eps)

{float an = 0.5, pr = 1;

int n = 1;

do

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

n++;

an = n * (an + 1);

}

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

return(pr);

}

 

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

float predel3(float eps)

{float an = 0.5, pr = 0.5 + 1 / an;

int n;

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

{an = n * (an + 1);

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

else break;

}

return(pr);

}

 







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.