Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример программы




Циклы

Лабораторная работа №3

Текст программы

//Определение области, в которую попадает точка, и площади

//этой области

#include<iostream.h>

#include<conio.h>

#include<math.h>

int main()

{int i = 0; //номер области на рисунке

float x, y, //координаты точки

s1, s2, s3, s4, s5; //площади областей

clrscr();

cout << "Введите координаты точки: x,y ";

cin >> x >> y;

if(y > 1 && y < 2 && x > -2 && x < 0 && x * x + (y - 1) * (y -1) >1)

{cout << "Точка в области M1. "; i = 1;

}

else if(x * x + y * y < 1 && (x + 1) * (x + 1) + y * y > 1 && y > 0

&& (x - 1) * (x - 1) + y * y >1)

{cout << "Точка в области М2. "; i = 2;

}

else if((x+1) * (x+1) + y * y < 1 && x * x + (y+1) * (y+1) < 1)

{cout << "Точка в области М3. "; i = 3;

}

else if(y < 0 && (x - 1) * (x - 1) + y * y < 1 &&

x * x + (y + 1) * (y + 1) > 1)

{cout << "Точка в области М4. "; i = 4;

}

else if(y < -1 && y > -2 && x < 2 && x > 0 &&

x * x + (y + 1) * (y + 1) > 1)

{cout << "Точка в области М5. "; i = 5;

}

else cout << "Точка вне выделенных областей";

switch(i)

{case 1: cout.precision(2); //число знаков после дес. точки

cout << "S1 = " << (s1 = 2 - M_PI / 4);

break;

case 2: cout.precision(2);

cout << "S2 = " << (s2 = 2 - M_PI / 2);

break;

 

case 3: cout.precision(2);

cout << "S3 = " << (s3 = M_PI / 2 – 1);

break;

case 4: cout.precision(2);

cout << "S4 = " << (s4 = 1);

break;

case 5: cout.precision(2);

cout << "S5 = " << (s5 = 2 - M_PI / 4);

}

getch();

return 0;

}


 

Цель лабораторной работы: изучение концепций и освоение технологии процедурного программирования, приобретение навыков процедурного программирования на языке C/С++ циклических вычислений.

 

Задание на программирование: используя технологию процедурного программирования разработать программу решения каждой из двух индивидуальных задач тремя видами циклических управляющих структур: Цикл - Пока (с предусловием), Цикл - До (с постусловием), Цикл - Для (с параметром).

 

Порядок выполнения работы:

 

1) Получить у преподавателя индивидуальное задание: две задачи. Выполнить постановку обеих задач: сформулировать условие, определить входные и выходные данные.

2) Разработать математическую модель.

3) Построить схему алгоритма, последовательно используя для решения каждой из задач все три циклические управляющие структуры (операторы while, do…while, for). Каждое решение должно быть реализовано в виде отдельной функции.

4) Составить программу на языке C/С++.

5) Входные данныевводить с клавиатуры по запросу.

6) Вывод результатов должен осуществляться в функции main (). Выходные данные выводить на экран в развернутой форме с пояснениями.

7) Использовать стандартные потоковые объекты ввода/вывода cin и cout.

8) Проверить и продемонстрировать преподавателю работу программы на полном наборе тестов, в том числе с ошибочными входными данными.

9) Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, схема алгоритма решения, текст программы, контрольные примеры.

 


Варианты индивидуальных заданий

1) Для введенных с клавиатуры значений X и m вычислить S:

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

Yn = 0.25sin(Yn -1) + sin(Yn -2); n = 2, 3, 4,…

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

 

1) Для введенных с клавиатуры значений X и m вычислить P:

 

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

Yn = 0.2 + 0.1 sin(Yn -1); n = 1, 2, 3,...

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

 

1) Для введенных с клавиатуры значений A, B, n, m и X вычислить S:

 

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

Yn =0.1 tg (Yn -1) + 0.3 tg (Yn -3); n = 3, 4, 5,...

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

 

1) Для введенных с клавиатуры значений A, B, n и X вычислить S:

 

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

n = 1, 2, 3,…

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

1) Для введенных с клавиатуры значений A, B, n, m и X вычислить S:

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

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

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

 

1) Для введенного с клавиатуры значения m вычислить S:

при x = 1.5 + 0.1* i

 

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

n = 2, 3, 4,…

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

 

1) Для введенного с клавиатуры значения m вычислить S:

при x = -1 + 0.2* i

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

n = 3, 4, 5,…

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

 


1) Для введенного с клавиатуры значения X вычислить S:

 

 

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

n = 2, 3, 4,…

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

 

1) Для введённого с клавиатуры значения N найти (2* N)!! по формуле:

(2* N)!! = 2*4*6*…*(2* N -2)*(2* N).

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

n = 3, 4, 5,…

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

 

1) Для введённого с клавиатуры значения N найти (2* N +1)!! по формуле

(2* N +1)!! = 1*3*5*…*(2* N -1)*(2* N +1).

 

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

n = 2, 3, 4…

 

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

 

1) Найти сумму всех целых чисел из отрезка [ A,B ], которые кратны 5.

 

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

Y 1 = X; Yn = Yn -1(2 – X * Yn -1); n = 2, 3, 4,…

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

 

1) Найти сумму всех целых чисел из отрезка [ A,B ], которые кратны 7.

2) Найти предел произведения для последовательности { Yn }, пользуясь рекуррентной формулой

Y 1 = 1; Yn = n *(Yn -1 + 1); n = 2, 3, 4,…

Вычисления закончить при выполнении условия 1/ Yn < ε.

 

1) Найти сумму всех целых чисел из отрезка [ A,B ], которые при делении на 5 дают остаток 3.

2) Вычислить - корень k -ой степени из положительного числа A, пользуясь последовательным приближением

n = 1, 2, 3,…

За корень принять такое Xn, при котором | XnXn -1| < ε.

 

1) Найти сумму всех целых чисел из отрезка [ A,B ], которые при делении на 7 дают остаток 4.

2) Для приближенного решения уравнения Кеплера X - q *sin(X)= m, 0 < q < 1

полагают X 0 = m, X 1 = m + q *sin(X 0),…, Xn = m + q *sin(Xn -1),…

Значения m и q вводятся с клавиатуры. Найти решение уравнения Кеплера, принимая за него такое Xn, при котором | XnXn -1| < ε.

 

1) Для заданного значения m вычислить .

Значения m, Y 0, Y 1, Y 2 вводятся с клавиатуры, а Yi вычисляется по формуле

i = 3, 4, 5,… m.

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

; n = 1, 2, 3,…

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

 

1) Для заданного значения m вычислить Ym.

Значения m, Y 0, Y 1, Y 2 вводятся с клавиатуры, а Yi вычисляется по формуле

Y i = tg2(Yi -1) + Yi -2; i = 3, 4, 5,…, m.

2) Найти предел последовательности с точностью ε.

1) Для заданного значения m вычислить .

Значения m, Y 0, Y 1, Y 2 вводятся с клавиатуры, а Yi вычисляется по формуле

i = 3, 4, 5,…, m.

2) Найти предел последовательности с точностью ε.

 

1) Для заданного значения m вычислить Ym.

Значения m, Y 0, Y 1 вводятся с клавиатуры, а Yi вычисляется по формуле

i = 3, 4, 5,…, m.

2) Найти сумму бесконечного ряда с точностью ε.

 

1) Для заданного значения m вычислить Ym.

Значения m, Y 0, Y 1, Y 2 вводятся с клавиатуры, а Yi вычисляется по формуле

Yi = sin2 (Yi -1) + cos2 (Yi -3); i =3, 4, 5,…, m

2) Для заданного с клавиатуры значения A найти сумму бесконечного ряда

с точностью ε.

 

1) Для заданного значения m вычислить .

Значения m, Y 0, Y 1, Y 2 вводятся с клавиатуры, а Yi вычисляется по формуле

Yi = sin(Yi -1) - cos(Yi -3); i = 3, 4, 5,…, m.

2) Найти сумму бесконечного ряда с точностью ε.

 


1) Для заданного значения m вычислить .

Значения m, Y 0, Y 1 вводятся с клавиатуры, а Yi вычисляется по формуле:

i =2, 3, 4,…, m.

2) Найти сумму бесконечного ряда с точностью ε.

 

1) Члены последовательностей { Xi } и { Yi } вычисляются по двум рекуррентным формулам. Вычислить X 20, Y 20, если

Xi+1 = X0 = 3.5

Yi+1 = ; Y0 = 2.2

 

2) Найти сумму бесконечного ряда с точностью ε.

 


 

//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;

}

 





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


Дата добавления: 2014-10-22; Просмотров: 522; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.166 сек.