mp1
.pdf1 |
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 |
4» |
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 - 5х > 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