Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

mp1

.pdf
Скачиваний:
991
Добавлен:
09.06.2015
Размер:
3.17 Mб
Скачать

1

3

5

7

 

{ for (int i=1; i<=5; + + i,cout«endl) //внеш ний цикл

1

3

5

7

9

for (int j=1; j<=2*i-1; j+=2)

//вн ут р ен ни й цикл

 

 

 

 

 

c o u t« j< < ”\t";

//т ел о вн ут р ен н его цикла

 

 

 

 

 

return 0;}

 

 

Замечание. В данном случае таблица состоит из пяти строчек, в каждой из которых печата­ ются только нечетные числа. Причем последнее нечетное число в строчке зависит от ее номера. Эта зависимость выражается через формулу k = 2i-l (зависимость проверить самостоятельно), где к - последнее число в строке, i - номер текущей строки. Внешний цикл следит за номером теку­ щей строки /, а внутренний цикл будет печатать нечетные числа из диапазона от I до 2 i-l.

3.5.Примеры использования операторов цикла при решении задач

1.Написать программу, которая выводит на экран квадраты всех целых чисел от А до В (А и В целые числа, при этом А<В).

Указания по решению задачи. Необходимо перебрать все целые числа из интервала от А до В. Эти числа представляют собой упорядоченную последовательность, в которой каждое число отличается от предыдущего на 1. При решении данной задачи можно использовать любой опера­ тор цикла.

#include <iostream> using nam espace std; int main()

{int a, b;

cout <<"a="; cin >>a; cout « "b = "; cin » b ; int i=a;

while (i<=b) cout«i*i+ + «"\t"; return 0;}

#include <iostream > using n am espace std; int main()

{int a, b;

cout « "a = " ; cin >>a; cout <<"b="; cin >>b; int i=a;

do cou t« i* i+ + «"\t"; while (i<=b);

return 0;}

Замечание. Рассмотрим выражение i*i++, значение которого выводится на экран в теле ка­ ждого из циклов. С учетом приоритетов операций (см. Приложение 3) вначале выполнится опера­ ция умножения, результат которой будет помещен в выходной поток, а затем постфиксный ин­ кремент увеличит значение i на единицу.

#include <iostream>

 

 

 

using nam espace std;

 

 

 

int main()

 

 

 

{ int a, b;

 

 

 

cout « ''a = " ; cin » a ;

 

 

 

cout << b - , Cin >>b,

jp U программы дадут нам одинаковый результат:

for (int i=a; i<=b; i++)

 

 

 

cout<<i*i«"\t"'

a

k

ответ

return 0;}

3

9

9 16 25 36 49 64 81

2. Написать программу, которая выводит на экран квадраты всех четных чисел из диапазона от А до В (А и В целые числа, при этом А<В).

Указания по решению задачи. Из диапазона целых чисел от А до В необходимо выбрать только четные числа. Напомним, что четными называются числа, которые делятся на два без ос­ татка. Кроме того, четные числа представляют собой упорядоченную последовательность, в кото­ рой каждое число отличается от предыдущего на 2. Решить эту задачу можно с помощью каждого

оператора цикла.

 

#include <iostream>

#include <iostream >

using nam espace std;

using n am esp ace std;

int main()

int main()

41

{int a, b, i;

cout <<”a="; cin >>a; cout «"b="; cin » b ; i=(a%2)? a+1: a; while (i<=b)

{cout«i‘i « ‘'\t"; i+=2;} return 0;}

{int a, b, i;

cout <<"a="; cin >>a; cout <<"b="; cin >>b; i=(a%2)? a+1: a;

do cout«i*i«"\t"; i+=2; while (i<=b);

return 0;}

Замечание. Начальное значение переменной i определяется с помощью тернарной опера­ ции. Если а нечетное число, то при делении на 2 мы получим остаток 1, который трактуется ком­ пилятором как истина, и. следовательно, переменной г будет присвоено значение а+1. Если же а четное число, то при делении на 2 мы получи mvостаток 0. который трактуется компилятором как ложь, и следовательно переменной i будет присвоено значение а. В результате, независимо от зна­ чения переменной а, переменной / будет присвоено четное значение.

#include <iostream>

 

 

 

 

using namespace std;

 

 

 

 

int main()

 

 

 

 

{int a, b;

 

 

 

 

cout «"a="; cin » a \

'jpu программы дадут нам одинаковый результат:

cout << b- , cin » b ,

for (int i=(a%2)? a+1: a; i<=b; i+=2)

 

 

 

 

cout«i*i«"\t";

a

b

0TBel

 

return 0i}

3

9

1 16 36

64

3. Постройте таблицу значений функции j '(a-) = —+ V7TT

для хб[а, b] с шагом h.

х

Если в некоторой точке х функция не определена, то выведите на экран сообщение об этом.

#inctude <iostream> #include <cmath> using namespace std;

/*вспомогательная функция: выводит на экран значение функции в точке х или сооб­ щение о том, что функция не определена'/

void f(float х)

{if (!х || х<-1) cout «"функция неопределена"; else cout <<1/x+sqrt(x+1);}

int main() //главная функция

 

 

{float a,b,h,x;

 

 

 

cout «"a="; cin»a;

 

 

 

cout <<"b="; cin»b;

 

 

 

cout «"h="; cin>>h;

//выводим заголовок таблицы

 

cout«”x\tf(x)\n";

с шагом h

for (x=a; x<=b; x+=h)

//перебираем все числа из отрезка [а, Ь]

{cout « х «"\t";

//выводим на экран значение х

 

f(x);

//выводим на экран значение функции в точке х

cout «endl;}

//переводим выходной поток на новую строку

return 0;}

 

 

 

Результат работы программы для а=-2, Ъ-4, h=2:

х

f(x)

 

 

-2

функция не определена

 

 

0

функция не определена

 

 

2

2.23205

 

 

4

2.48607

42

(xJ + 1 j~, при л- < 0 ;

4. Постройте таблицу значений функции у(х) = О, при 0 < X < 1;

для х е[а):Ь]

\х2 - 5х+ 1, при х ^ 1.

с шагом h.

#include <iostream> #include <cmath> using namespace std;

float f(float x) //вспомогательная функция: возвращает значение функции в точке х

{ if (х<0) return pow(pow(x,3)+1,2);

//условие первой ветви

else if (х<1) return 0;

//условие второй ветви

else return fabs(x*x-5*x+1);}

//по умолчанию третья ветвь

int тain() //главная функция

{float a,b,h,x;

cout <<"а="; cin»a; cout <<"b="; cin»b; cout «"h=", cin»h;

cout«"x\tf(x)\n"; //выводим заголовок таблицы

for (x=a; x<=b; x+=h) //перебираем все числа из отрезка [а, Ь] с шагом h и выводим на cout « х <<"\t"« f(x)«endl; //экран значение х и значение функции в точке х

return 0;}

Результат работы программы для а=-3. Ь-3, h-1.5:

X

f(x)

 

-3

676

 

-1.5

5.64063

 

0

0

 

1.5

4.25

 

3

5

3.6.О ператоры безусловного перехода

ВC++ есть четыре оператора, изменяющие естественный порядок выполнения операторов: оператор безусловного перехода goto, оператор выхода break, оператор перехода к следующей итерации цикла continue, оператор возврата из функции

return.

Оператор безусловного перехода goto

Оператор безусловного перехода goto имеет формат:

goto <метка>;

В теле той же функции должна присутствовать ровно одна конструкция вида:

<метка>: <оператор>;

Оператор goto передает управление на помеченный меткой оператор. Рас­ смотрим пример использования оператора goto:

#include <iostream>

 

using namespace std;

 

int main()

 

{ float x;

//метка

metka: cout «"x=";

cin»x;

 

43

if (x) cout<<"y="<<'l/x«endl;

else {сои1«"функция не определена\п";

goto metka;} //передача управления метке

return 0;}

Замечание. В данном примере при попытке ввести 0 на экран будет выведено сообщение «функция не определена», после чего управление будет передано метке, и программа повторно попросит ввести значение х.

Следует учитывать, что использование оператора goto затрудняет чтение больших по объему программ, поэтому использовать его нужно только в крайних случаях.

Оператор выхода break

Оператор break используется внутри операторов ветвления и цикла для обес­ печения перехода в точку программы, находящуюся непосредственно за операто­ ром, внутри которого находится break.

В разделе 3.2. оператор break применялся для выхода из оператора switch, ана­ логичным образом он может применяться для выхода из других операторов.

Оператор перехода к следующей итерации цикла continue

Оператор перехода к следующей итерации цикла continue пропускает все опе­ раторы, оставшиеся до конца тела цикла, и передает управление на начало следую­ щей итерации (повторение тела цикла). Рассмотрим оператор continue на примере.

#include <iostream>

 

using namespace std;

 

int main()

//перебираем все числа от 1 до 99

{for (int i=1; i<100; ++i)

{if (i % 2) continue;

//если число нечетное, то переходим к следующей итерации

co u t« i« "\t";}

//выводим число на экран

return 0;}

 

Замечание. В результате данной программы на экран будут выведены только четные числа из интервала от 1 до 100, т.к. для нечетных чисел текущая итерация цикла прерывалась и команда c o u t « i « " \ l " не выполнялась.

Оператор возврата из функции return

Оператор возврата из функции return завершает выполнение функции и пере­ дает управление в точку ее вызова. Данный оператор мы неоднократно использова­ ли при разработке функций, возвращающих значение.

3.7.Упражнения

I.Дана точка на плоскости с координатами (х, у). Составить программу, которая вы­ дает одно из сообщений «Да», «Нет», «На границе» в зависимости от того, лежит ли точка внутри заштрихованной области, вне заштрихованной области или на ее гра­ нице. Области задаются графически следующим образом:

1.

2.

3.

4.

\

у ' ъ щ / у = 1 x 1

 

У- 25

 

N

 

/ ; 1

5

 

.. ....\4

\

/

х

 

к / х

 

 

 

' А

||К У =

 

 

 

 

У= -2 / У-t 311 , УI I ш .

Ipy=1X

Л \ у = -1

,

50 х

Wl

 

 

 

■Чч

X

.

 

X

 

 

/ о о

 

 

 

Ш, -40 40

 

 

 

 

 

 

 

1

 

13.

 

14.

 

 

 

 

16.

 

У

 

 

 

 

 

 

 

 

/ яГ

-23

- y

=

x

 

 

 

 

 

 

 

 

 

Г

'70 х

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

17.

18.

 

 

 

 

 

 

v*

 

 

 

 

 

У1

 

 

 

 

 

 

 

 

23

 

 

 

 

10

x

 

 

v

X

 

 

 

 

 

 

 

\ ? = -

-Ш

II. Составить программу.

1)Дан порядковый номер месяца, вывести на экран его название.

2)Дан порядковый номер дня месяца, вывести на экран количество дней оставших­ ся до конца месяца.

3)Дан номер масти m (1 < m < 4), определить название масти. Масти нумеруются: «пики» - 1, «трефы» - 2, «бубны» - 3, «червы» - 4.

4)Дан номер карты к (6 < к < 14), определить достоинство карты. Достоинства оп­ ределяются по следующему правилу: «туз» - 14, «король» - 13, «дама» - 12, «ва­ лет» -11, «десятка» - 10, ..., «шестерка» - 6.

5)Дан номер масти m (1 < m < 4) и номер достоинства карты к (6 < к < 14). Опре­ делить полное название соответствующей карты в виде «дама пик», «шестерка бубен» и т.д.

6)С 1 января 1990 года по некоторый день прошло m месяцев, определить назва­ ние текущего месяца.

7)Дано расписание приемных часов врача. Вывести на экран приемные часы врача

взаданный день недели (расписание придумать самостоятельно).

8)Проведен тест, оцениваемый в целочисленный баллах от нуля до ста. Вывести на экран оценку тестируемого в зависимости от набранного количества баллов: от 90 до 100 - «отлично», от 70 до 89 - «хорошо», от 50 до 69 —«удовлетворитель­

но», менее 50 - «неудовлетворительно».

9)Даны два числа и арифметическая операция. Вывести на экран результат этой операции.

10)Дан год. Вывести на экран название животного, символизирующего этот год по восточному календарю.

11)Дан возраст человека мужского пола в годах. Вывести на экран возрастную кате­ горию: до года - «младенец», от года до 11 лет - «ребенок», от 12 до 15 лет - «подросток», от 16 до 25 лет - «юноша», от 26 до 70 лет - «мужчина», более 70 лет - «пожилой человек».

12)Дан пол человека: м - мужчина, ж - женщина. Вывести на экран возможные мужские и женские имена в зависимости от введенного пола.

13)Дан признак транспортного средства: а - автомобиль, в - велосипед, м - мото­ цикл, с - самолет, п - поезд. Вывести на экран максимальную скорость транс­ портного средства в зависимости от введенного признака.

14)Дан номер телевизионного канала (от 1 до 5) . Вывести на экран наиболее попу­ лярные программы заданного канала.

15) Дан признак геометрической фигуры на плоскости: к - круг, п - прямоугольник, т - треугольник. Вывести на экран периметр и площадь заданной фигуры (дан­ ные, необходимые для расчетов, запросить у пользователя).

III. Вывести на экран:

Замечание. Решите каждую задачу тремя способами: используя операторы цикла while, do while иfor.

1)целые числа 1, 3, 5, ..., 21 в строчку через пробел:

2)целые числа 10, 12, 14, ..., 60 в обратном порядке в столбик;

3) числа следующим образом:

4) числа следующим образом:

10 10.4

 

25

25.5

24.8

11

11.4

-

26 26.5

25.8

25

25.4

 

35

35.5

34.8

5)таблицу соответствия между весом в фунтах и весом в килограммах для значе­ ний 1, 2, 3, ..., 10 фунтов (1 фунтов = 453г);

6)таблицу перевода 5, 10, 15, ..., 120 долларов США в рубли по текущему курсу (значение курса вводится с клавиатуры);

7)таблицу стоимости для 10, 20, 30,..., 100 штук товара, при условии что одна штука товара стоит х руб (значение х водится с клавиатуры);

8)таблицу перевода расстояний в дюймах в сантиметры для значений 2, 4, 6, ..., 12 дюймов (1 дюйм = 25.4 мм);

9)кубы всех целых чисел из диапазона от А до В (А<В) в обратном порядке;

10)все целые числа из диапазона от А до В (А<В), оканчивающиеся на цифру X;

11)все целые числа из диапазона от А до В (А<В), оканчивающиеся на цифру X или У;

12)все целые числа из диапазона от А до В (А<В), оканчивающиеся на любую чет­ ную цифру;

13)только положительные целые числа из диапазона от А до В (А<В);

14)все целые числа из диапазона от А до В, кратные трем (А<В);

15)все четные числа из диапазона от А до В, кратные трем (А<В);

46

16)только отрицательные четные числа из диапазона от А до В (А<В);

17)все двухзначные числа, в записи которых все цифры разные;

18)все двухзначные числа, в которых старшая цифра отличается от младшей не больше чем на 1;

19)все трехзначные числа, которые начинаются и заканчиваются на одну и ту же цифру;

20)все трехзначные числа, в которых хотя бы две цифры повторяются.

IV. Вывести на экран числа в виде следующей таблицы:

1)

5

5

5

5

5

5

2) 1

2

3

 

10

3)

-10 -9

-8

 

12

 

5

5

5

5

5

5

 

1

2

3

 

10

 

-10 -9

-8

 

12

 

5

5

5

5

5

5

 

1

2

3

 

10

 

-10 -9

-8

 

12

 

5

5

5

5

5

5

 

1

2

3

 

10

 

-10 -9

-8

 

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-10

-9

-8

 

12

41

42

 

43

 

50

5)

5

 

 

 

 

6)

1

1

1

1

1

 

51

52

 

53

 

60

 

5

5

 

 

 

 

1

1

1

1

 

 

61

62

 

63

 

70

 

5

5

5

 

 

 

1

1

1

 

 

 

 

72

 

 

 

 

 

5

5

5

5

 

 

1

1

 

 

 

 

71

 

73

 

80

 

5

5

5

5

5

 

1

 

 

 

 

7)

1

 

 

 

 

 

8)

6

6

6

6

6

9)

7

 

 

 

 

 

2

2

 

 

 

 

 

7

7

7

7

 

 

6

6

 

 

 

 

3

3

3

 

 

 

 

8

8

8

 

 

 

5

5

5

 

 

 

4

4

4

4

 

 

 

9

9

 

 

 

 

4

4 ' 4

4

 

 

5

5

5

5

5

 

 

10

 

 

 

 

 

3

3

3

3

3

Ю)

8

8

8

8

8

 

11)

1

 

 

 

 

12)

1

 

 

 

 

 

7

7

7

7

 

 

 

1

2

 

 

 

 

2

1

 

 

 

 

6

6

6

 

 

 

 

1

2

3

 

 

 

3

2

1

 

 

 

5

5

 

 

 

 

 

1

2

3

4

5

 

4

3

2

1

 

 

4

 

 

 

 

 

 

1

2

3

4

 

5

4

3

2

1

13)

0

1

2

3

4

 

14)

4

3

2

1

0

15)

1

 

 

 

 

 

0

1

2

3

 

 

 

3

2

1

0

 

 

0

 

 

 

 

 

0

1

2

 

 

 

 

2

1

0

 

 

 

2

2

 

 

 

 

0

1

 

 

 

 

 

1 -

0

 

 

 

 

0

0

 

 

 

 

0

 

 

 

 

 

 

0

 

 

 

 

 

3

3

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

4

4

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

5

5

5

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

0

0

16)

8

 

 

 

 

 

17)

1

 

 

 

 

18)

9

 

 

 

 

 

7

 

 

 

 

 

 

6

 

 

 

 

 

4

 

 

 

 

 

7

7

 

 

 

 

 

2

2

 

 

 

 

8

8

 

 

 

 

6

6

 

 

 

 

 

7

7

 

 

 

 

3

3

 

 

 

 

6

6

6

 

 

 

 

3

3

3

 

 

 

7

7

7

2

 

 

5

5

5

 

 

 

 

8

8

8

 

 

 

2

2

2

 

 

5

5

5

5

 

 

 

4

4

4

4

 

 

6

6

6

6

6

 

4

4

4

4

 

 

 

9

9

9

9

 

 

1

1

1

1

1

47

3

 

 

 

 

20)

2

2

2

2

0

 

 

 

 

 

3

4

5

6

2

3

 

 

 

 

2

2

2

2

9

0

3

 

 

 

2

3

4

5

2

2

 

 

 

2

2

2

 

8

9

0

3

 

 

1

2

3

 

2

2

2

 

 

2

2

 

 

7

8

9

0

 

 

0

1

 

 

2

2

2

2

3

 

2

 

 

 

6

7

8

9

0

 

-1

 

 

 

V. Постройте таблицу значений функции y=f(x) для Х€[а, Ь] с шагом h. Если в не­ которой точке х функция не определена, то выведите на экран сообщение об этом.

 

Замечание. Для решения задачи использовать вспомогательную функцию.

1. у .

1

 

 

 

 

(1+я-Г

2. v = -

Г 2

i"

 

 

 

3.

у = \'х

- 1;

4. v =:л /5 -Х 3

 

6. з' = 1п(4 - х 2 );

7.

у .

 

 

9. >' = —

+ — -— ;

 

 

V 2 л : - 1

 

 

х - 1

1 - Ах

10. _)' = lnjx - 2);

 

] 2.

у = In(л-4 - l)ln(l + лг);

13.

_

In(x - 2)

 

 

 

 

у

■JSx +1

 

15. у = Ц 3 х |\2 х 5 - 1 ;

 

 

 

16. у =

3

 

 

 

 

 

 

ж3 +8

 

18. у = VX2 + 1 -л[.х +5 ;

19. у = ■Л

20. у = —-— + ln(l - Ы).

 

 

 

 

 

 

х + 1

 

 

 

VI. Постройте таблицу значений функции y=f(x) для хе[а, Ь] с шагом h.

Замечание. Для решения задачи использовать вспомогательную функцию.

 

1 -г-, если л->0.9;

 

 

sin (х), если |х| < 3;

 

(0.1 + х)

 

 

Тх

 

 

0.2х + 0.1, если 0 < х < 0.9;

2.

v =

 

\ . у =

=, если 3 < jxl < 9;

 

х 2 +0.2, если х < 0.

 

 

Гх< +5

 

 

 

 

Vx2 + 1 -

л/х2 + 5, если |х| > 9.

 

 

 

 

 

0, если х < а;

 

 

х3 -0 .1 ,

если jxj < 0.1;

 

х-а

4.

у =

0 .2 х -0 .1, если 0.1<|х|<0.2;

3 -> =

если х > а;

х + а

 

 

х3 + 0.1,

если |х| > 0.2.

 

1. если х = а.

 

 

 

 

 

 

 

48

5- У -

7.у --

9.у =

11.у

13. у

15.у

17.у

19.у

а + Ь, если

х 2 - 5 х < 0;

а - А, если

0 < (х2 - 5xj < 10;

аб, если х2 - > 10.

-4 , еслих < 0;

х2 + Зх + 4, если 0 < л: < 1; 2, если х £ 1.

(х2 - 1 ^ , если х < 1;

1

(1+ ХГ если х > 1/

О, еслих

х" + 5, если х < 5; 0, если 5 < х < 20;

1, если х > 20.

1, если х = 1 или х = -1;

-1

, если х > 0 и х ф 1;

1 - х

1

, еслих < 0 и х *■-1 .

.1 + X

1, если (х-\) < 1;

О, если (х-1) = 1; -1, если (х-1 ) > \ .

а + Ьх, если х < 93;

b - ас, если 93 < х < 120; abx, если х > 120.

л/5х2 + 5, если|х[ < 2;

, если 2 < 1x1 < 10;

V5х2 + 5

О, если |х| > 10.

 

 

,

если (х2 + 2х + ])< 2;

Ь . у = \ —^ — ,если

2 < (х2 + 2х + l)< 3;

 

 

х2 -1

 

 

 

 

 

О,

если (х2 + 2х + l)> 3.

 

 

х2

- 1,

если |х| < 1;

. у =

2х -1 ,

если 1 < |х| < 2;

 

 

х5 -1 ,

если |х] > 2.

 

 

х2, если (х + 2) <\ ;

10.

у

 

1

если

1 < (х + 2) < 10;

х + 2

 

 

 

 

 

 

 

х + 2,

если

(х + 2)>10;

 

 

0,

если х < 0;

12.

у = х2 +1, если х > 0 и х * 1;

 

 

1, если х = 1.

 

 

 

0.2х2 -

х - 0.1, если х < 0;

14.

у =

 

2

, если х > 0 и х * 0.1;

 

 

 

 

х - 0.1

 

 

 

 

О,

если х = 0.1.

 

 

х,

если

х > 0;

16.

у =

О,

если -1 < х < 0;

 

 

х 2, если х < -1.

 

 

х2 -0 .3 ,

если_у<3;

18. у = О,

если 3 < х < 5;

 

 

х2 +1,

если х > 5.

 

 

sin(x),

если [xj < “ ;

20.

у =

cos(x), если ^ < |х| < ж;

 

 

О,

если |х| >

ж.

49

4.Р Е К У Р Р Е Н Т Н Ы Е С О О Т Н О Ш Е Н И Я

4.1.Вы числение членов рекуррентной последовательности

Пусть 0,,а 2,...,а „ - произвольная числовая последовательность. Рекуррент­

ным соотношением называется такое соотношение между членами последователь­ ности, в котором каждый следующий член выражается через несколько предыду­

щих, т.е а к - f ( a k_ ] , a k_2 , . . . , a k 4 ), к > 1 ( 1).

Последовательность задана рекуррентно, если для нее определено рекуррент­ ное соотношение вида ( 1) и заданы первые / ее членов.

Самым простым примером рекуррентной последовательности является ариф­ метическая профессия. Рекуррентное соотношение для нее записывается в виде:

ак ~ ак-1+ d - где d - разность прогрессии. Зная первый элемент и разность прогрес­

сии, и, используя данное рекуррентное соотношение, можно последовательно вы­ числить все остальные члены прогрессии.

Рассмотрим пример программы, в которой вычисляются первые п членов

арифметической прогрессии при условии, что а, = ^ и d =

#include <iostream> using namespace std; int main()

{float a=0.5, d=0.25;

//задали первый член последовательности и разность прогрессии

int n; cout <<"n="; cin>>n;

//ввели количество членов последовательности

cout«"a1: ”«a<<endl; //вывели первый член последовательности

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

//организуем вычисление 2, 3, ... ,n члена последовательности

{a=a+d;

//для этого прибавляем к предыдущему члену значение d

cout«"a"«i<<"="<<a«endl;}

Ни выводим новое значение а на экран

return 0;}

 

 

 

Результат работы программы:

п

состояние экрана

 

 

5

а!: 0.5

 

 

 

а2: 0.75

 

 

 

аЗ: I.

а4: 1.25 а5: 1.5

Другим примером рекуррентной последовательности является геометрическая

прогрессия. Рекуррентное соотношение для нее записывается в виде: bk - bk_] * q ,

где q - знаменатель прогрессии. Рассмотрим пример программы, в которой вычис­ ляются первые п членов арифметической прогрессии при условии, что b t = ], q=2.

#include <iostream> using namespace std; int main()

{int b=1, q=2,n; I/задали первый член последовательности и знаменатель прогрессии cout <<"n="; cin»n; //ввели количество членов последовательности

cout«"M ="«b«endl; //вывели первый член последовательности

for (int i=2; i<=n; i++) //организуем вычисление 2, 3, ... ,n члена последовательности {b=b*q; //для эт ого умножаем предыдущее значение Ь на q

co u t« "b "« i« "= "« b « e n d l;} //и выводим новое значение Ь на экран return 0;}

50

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]