Технология программирования задач с циклами

Содержание

Слайд 2

Цикл – многократное повторение одного и того же участка программы Циклом

Цикл – многократное повторение одного и того же участка программы
Циклом называется блок

кода, который для решения задачи требуется повторить несколько раз.
Слайд 3

Каждый цикл состоит из блока проверки условия повторения цикла тела цикла

Каждый цикл состоит из
блока проверки условия повторения цикла
тела цикла
Цикл выполняется до

тех пор, пока блок проверки условия возвращает истинное значение. Тело цикла содержит последовательность операций, которая выполняется в случае истинного условия повторения цикла. После выполнения последней операции тела цикла снова выполняется операция проверки условия повторения цикла. Если это условие не выполняется, то будет выполнена операция, стоящая непосредственно после цикла в коде программы.
Слайд 4

Виды циклов Счётный оператор цикла Оператор цикла с предусловием Оператор цикла с постусловием

Виды циклов

Счётный оператор цикла
Оператор цикла с предусловием
Оператор цикла с постусловием


Слайд 5

В языке C++ имеется три вида операторов цикла: for - оператор

В языке C++ имеется три вида операторов цикла:

for - оператор цикла


с параметром - счетчиком
(счетный оператор цикла)
(или арифметический оператор цикла).
while - оператор цикла
с предварительным условием (с предусловием);
do-while - оператор цикла
с последующим условием
(с постусловием);
Слайд 6

Оператор цикла for применяется при заранее известном количестве повторений. При этом

Оператор цикла for

применяется при заранее известном количестве повторений.
При этом некоторая

переменная, называемая параметром цикла, должна последовательно принимать значения от начального до конечного.
Слайд 7

Цикл for организуется с помощью специальной переменной, которая называется параметром цикла.

Цикл for организуется с помощью специальной переменной, которая называется параметром цикла.


Параметр цикла ‑ это числовая переменная, которая управляет работой цикла. Она изменяется по закону арифметической прогрессии, что обеспечивает повторение цикла нужное количество раз.
Слайд 8

Параметры цикла Для определения количества повторений заранее должны быть известны: начальное

Параметры цикла

Для определения количества повторений заранее должны быть известны:
начальное значение параметра

- tнач;
конечное значение параметра - tкон;
шаг изменения параметра - Δt.
Тогда количество повторений цикла определится по формуле:
Слайд 9

Структура цикла for на C++ имеет 4 блока, выполняющиеся в следующей

Структура цикла for на C++

имеет 4 блока, выполняющиеся в следующей

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

Блок-схема арифметического цикла и общий вид и работа цикла for for(

Блок-схема арифметического цикла и общий вид и работа цикла for
for(<п.цк.> =

<н.з.>; <условие выполнения цикла>; <изм. п.цк.>)
<оператор>;

Любой оператор

Параметр цикла

Начальное значение

← тело цикла

Изменение параметра цикла

for(<п.цк.> = <н.з.>; <условие выполнения цикла>; <изм. п.цк.>)
{<оператор1>; <оператор2>; … <операторn>; }

тело цикла

Блок инициализации

Слайд 11

Пример #include ; #include ; using namespace std; int main() {

Пример
#include ;
#include ;
using namespace std;
int main()
{
int sum = 0,

i;
for (i=1; i<10; i++) sum+=i;
cout << sum << endl;
getchar();
}
Слайд 12

В C++ допускается объявление переменных прямо в строке инициализации цикла for.

В C++ допускается объявление переменных прямо в строке инициализации цикла

for. В этом случае, предыдущий пример программы примет вид
#include ;
#include ;
using namespace std;
void main() {
int sum = 0;
for (int i=1; i<10; i++) sum+=i;
cout << "sum=" << sum << endl;
getchar();
}
Слайд 13

Обращение к переменной i, объявленной в цикле, вне цикла приведет к

Обращение к переменной i, объявленной в цикле, вне цикла приведет к

ошибке (область видимости переменной ограничивается циклом).
Пример
#include ;
#include ;
using namespace std;
void main() {
int sum = 0;
for (int i=1; i<10; i++) sum+=i;
cout << "sum=" << sum << "i="<< i << endl; //в этой //строке ошибка
getchar();
}
Слайд 14

Пример . Допустим, что в группе из N человек собираются профсоюзные

Пример . Допустим, что в группе из N человек собираются профсоюзные

взносы по m рублей. Рассчитать, какую сумму группа перечислит в профсоюзный фонд.

#include
using namespace std;
int main()
{int N=20,m=100,s=0;
for(int i=1; i<=N; i++)
s+=m;
cout<< "Summa = "<system("pause");
return 0;
}

Метод накопления суммы

Слайд 15

5. Пример программы с использованием счетного оператора цикла y = еах,

5. Пример программы с использованием счетного оператора цикла
y = еах, х

∈ [0,25; 0,75], Δх = 0,05

 

Слайд 16

Программа с использованием счетного оператора цикла y = еах, х ∈

Программа с использованием счетного оператора цикла
y = еах, х ∈ [0,25;

0,75], Δх = 0,05

int main( )
{
double a, y; int n, i;
cout << "a: "; cin >> a;
double x, xn = 0.25, xk = 0.75, dx = 0.05;
n = (xk - xn) / dx+1;
cout << "\ni" << setw(5) << "x" << " y\n\n";
for (x=xn, i = 1 ; i < =n ; i++ )
{
y = exp(a * x);
cout << left << setw(5) << i << setw(7) << x << y << endl;
}
return 0;
}
\\ setw - Задает ширину отображаемого поля.

; i++, x += dx)

x += dx;

Слайд 17

Параметр цикла вещественного типа y = еах, х ∈ [0,25; 0,75],

Параметр цикла вещественного типа
y = еах, х ∈ [0,25; 0,75], Δх

= 0,05

#include
#include
#include
using namespace std;
int main( )
{
double a, y;
cout << "a: "; cin >> a;
double xn = 0.25, xk=0.75, dx=0.05;
for(double x = xn; x < = xk; x += dx)
{
y = exp(a * x);
cout << left << setw(7) << x << y << endl;
}
return 0;
}

Вещественные значения НЕЛЬЗЯ сравнивать на «равно»: в силу приближённого представления в цифровом ПК вещественных чисел.

Слайд 18

Параметр цикла вещественного типа y = еах, х ∈ [0,25; 0,75],

Параметр цикла вещественного типа
y = еах, х ∈ [0,25; 0,75], Δх =

0,05

#include
#include
#include
using namespace std;
int main( )
{
double a, y;
cout << "a: "; cin >> a;
double xn = 0.25, xk=0.75, dx=0.05;
for(double x = xn; x < xk + dx/2; x += dx)
{
y = exp(a * x);
cout << left << setw(7) << x << y << endl;
}
return 0;
}

Слайд 19

Использование нескольких переменных управления циклом Цикл for является одним из наиболее

Использование нескольких переменных управления циклом

Цикл for является одним из наиболее гибких

операторов, т.к. допускает большое кол-во разнообразных вариантов.
Например, допустимо использовать несколько переменных управления.
Пример:
for (x = 0, y = 10; x <= y; ++x, --y)
cout << x << ' ' << y <<'\n';
Слайд 20

Пропущенные секции в операторе for Пример (отсутствует секция приращения): Цикл, который

Пропущенные секции в операторе for

Пример (отсутствует секция приращения):
Цикл, который должен выполняться

до тех пор, пока с клавиатуры не будет введено число 123.
int x;
for (x = 0; x != 123; )
{
cout << "enter number: ";
cin >> x;
}
Слайд 21

Пример (отсутствуют секции инициализации и приращения): x = 0; for (

Пример (отсутствуют секции инициализации и приращения):
x = 0;
for ( ; x

< 10; )
{
cout << x << ' ';
x++;
}
Слайд 22

Пример (отсутствуют все секции – бесконечный цикл): for ( ; ;

Пример (отсутствуют все секции – бесконечный цикл):
for ( ; ; )
{

// …
}
Для выхода из такого цикла необходимо в теле цикла использовать оператор break, размещенный внутри условного оператора if.

Например: кроты запасли в своей норке S штук зерен. С определенной периодичностью они обновляют запасы своих норок ds1= a | sin (3t+2) | и поедают их с величиной ds2 = 5⋅103. Хитрые же мыши с другой периодичностью иногда обворовывают, а иногда и возвращают награбленное у кротов на величину ds3 = b (sin (5t-4) ). Запустить процесс заполнения/опустошения норки.

double s=2.3e20; int t=0; float a=35,b=52;
for ( ; ; )
{t++; ds1 = a*abs(sin(3*t)+2; ds2=5e3 ; ds3 = b *(sin (5t-4));
s+=ds1-ds2- ds3;
}

If (s<=0) break;

Слайд 23

Пример (отсутствует тело цикла): (бестелесые циклы весьма полезны) int i; int

Пример (отсутствует тело цикла):
(бестелесые циклы весьма полезны)
int i;
int sum = 0;
//

суммирование чисел от 1 до 10
for ( i = 1 ; i <= 10 ; sum += i++ ) ; // цикл без тела цикла
Чтобы понять смысл оператора sum += i++ (это обычная запись для C++)
необходимо разобрать его на составные части:
sum = sum + i;
i = i + 1;
Слайд 24

2.3 Табулирование функции счетным оператором

2.3 Табулирование функции счетным оператором

Слайд 25

Словесный алгоритм задачи

Словесный алгоритм задачи

Слайд 26

Решение задачи #include #include using namespace std; int main() { float

Решение задачи

#include
#include
using namespace std;
int main()
{
float xn, xk, dx, t , y;
printf("Enter

xn, xk, dx,t \n");// \n -переход на новую
// строку = endl
cin>>xn>>xk>>dx>>t;
for (float x=xn;x<=xk;x+=dx)
{
if(x<0) y=t;
else if (x>=0 && x<10) y=t*x;
else y=2*t;
if (t>100) printf("%9.2f %9d \n", x,(int)y);
else printf("%9.2f %9.2f \n", x, y);
}
system("pause");
return 0;
}
Слайд 27

Замечание о внутренних переменных Переменная х описана ВНУТРИ цикла, после его

Замечание о внутренних переменных

Переменная х описана ВНУТРИ цикла, после его завершения,

переменная х УДАЛЯЕТСЯ из памяти и мы не можем получить доступ к ее значению!!!
Область видимости этой переменной – только тело оператора for.
Слайд 28

Вложенные циклы for Синтаксис вложенных циклов for //Внешний цикл for (/*инициализирующее

Вложенные циклы for
Синтаксис вложенных циклов for
//Внешний цикл
for (/*инициализирующее выражение */ ;

/* условное выражение */;
/* модифицирующее выражение */ )
{
/*один оператор или блок операторов*/;
// Внутренний цикл
for (/*инициализирующее выражение */ ; /* условное выражение */;
/* модифицирующее выражение */ )
{
/*один оператор или блок операторов*/;
}
}
Слайд 29

Пример 1 #include ; #include ; using namespace std; void main()

Пример 1
#include ;
#include ;
using namespace std;
void main() {
int sum = 0;
for

(int i=1; i<4; i++) {
cout << "i=" << i << endl;
for (int j=1; j<5; j++)
cout << "i=" << i << " j="<< j << endl;
}
getchar();
}
Слайд 30

Оператор break #include ; #include ; using namespace std; void main()

Оператор break

#include ;
#include ;
using namespace std;
void main() {
int sum =

0;
for (int i=1; i<6; i++) {
for (int j=1; j<5; j++) {
if (i < j) break;
cout << "i=" << i << "\t j="<< j << endl;
cout << "i-j=" << i-j << endl;
}
cout << endl;
}
getchar();
}

Оператор break (разрыв) вызывает немедленный выход из циклов, организуемых с помощью операторов for, while, do-while, switch; управление передается на оператор, следующий за законченным.

Слайд 31

Пример 2 #include ; #include ; using namespace std; void main()

Пример 2
#include ;
#include ;
using namespace std;
void main() {
int sum =

0, j;
for (int i=1; i<6; i++) {
for (j=1; j<5; j++) {
cout << "i=" << i << "\t j="<< j << endl;
cout << "i-j=" << i-j << endl;
}
if (i < j) break;
cout << endl;
}
getchar();
}
Слайд 32

Оператор continue Пример 1 #include ; #include ; using namespace std;

Оператор continue

Пример 1
#include ;
#include ;
using namespace std;
void main() {
int

sum = 0;
for (int i=1; i<8; i++) {
if (i % 2 == 0) continue;
cout << "i=" << i << endl;
}
getchar();
}

Оператор continue передает управление на следующую итерацию того цикла, в теле которого он находится.

Слайд 33

Задания для самостоятельной работы Определите что будет выведено на экран в

Задания для самостоятельной работы

Определите что будет выведено на экран в

результате работы следующей программы.
#include ;
#include ;
using namespace std;
void main() {
int a,b=0,i;
for (i=1;i<=6;i++)
{
a=i+2;
if (a>=5) b-=a;
else b+=a;
}
cout<< "b="< getchar();
}
Наберите текст программы и проверьте правильность ответа.
Слайд 34

Задания для самостоятельной работы Определите что будет выведено на экран в

Задания для самостоятельной работы

Определите что будет выведено на экран в

результате работы следующей программы.
#include ;
#include ;
using namespace std;
void main() {
int a=0,i,j;
for (i=12;i<=15;i++)
for (j=4;j>=2;j--)
if (i%j!=0) continue;
else
a+=i/j;
cout<< "a="< getchar();
}
Наберите текст программы и проверьте правильность ответа.
Слайд 35

Вычисление суммы и произведение ряда Вычисление конечной суммы сводится к нахождению

Вычисление суммы и произведение ряда

Вычисление конечной суммы сводится к нахождению суммы

заданного количества слагаемых:
где i – номер слагаемого; f(i) – слагаемое с номером i.
Слайд 36

Вычисление организуется в виде циклического алгоритма, когда при каждом прохождении цикла

Вычисление организуется в виде циклического алгоритма, когда при каждом прохождении цикла

номер слагаемого i увеличивается на 1, а сумма изменяется на величину i-го слагаемого:
Слайд 37

Цикл повторяется до тех пор, пока не будут просуммированы все n

Цикл повторяется до тех пор, пока не будут просуммированы все n

слагаемых. Для того, чтобы начальное содержимое ячейки суммы не исказило результат, сумма предварительно должна быть обнулена
Вывод результата, поскольку он является единственным, осуществляется после окончания работы цикла.
Слайд 38

Слайд 39

Слайд 40

Вычисление конечного произведения представляет собой процесс нахождения произведения заданного количества сомножителей по формуле

Вычисление конечного произведения представляет собой процесс нахождения произведения заданного количества сомножителей

по формуле
Слайд 41

Как и суммирование, вычисление произведения организуется с помощью циклического процесса по

Как и суммирование, вычисление произведения организуется с помощью циклического процесса по

рекуррентному соотношению
В отличие от суммирования начальное значение произведения
Слайд 42

Пример. Вычислить факториал числа N.

Пример. Вычислить факториал числа N.

Слайд 43

Операторы цикла while и do -while применяются в тех случаях, когда

Операторы цикла while и do -while

применяются в тех случаях, когда

известно
условие выполнения цикла,
а количество повторений может быть заранее не известно.
Слайд 44

Оператор цикла с предусловием Общий вид while ( ) ; Любой

Оператор цикла с предусловием

Общий вид
while (<логическое выражение>)
<оператор>;

Любой оператор

Пока

Условие

выполнения цикла

← тело цикла

Слайд 45

Пример 1. Автомобиль движется со скоростью 5 км/ч и начинает наращивать

Пример 1. Автомобиль движется со скоростью 5 км/ч и начинает наращивать

скорость с ускорением 10 км/ч2 до тех пор пока не будет достигнута скорость 60 км/час. Определить, за какое время эта скорость будет достигнута.
Слайд 46

#include using namespace std; int main() {int speed = 5, time

#include
using namespace std;
int main()
{int speed = 5, time = 0, count=0;

while ( speed < 60 )
{
cout << count <<"-speed = " << speed << " time= "< speed += 10; // приращение скорости
count++; // подсчёт повторений цикла
time++;// наращивание времени
}
cout<< "final speed "< system("pause"); return 0;}
Слайд 47

Слайд 48

Анализ программы инициализация трёх переменных (скорости speed, времени time и счётчика

Анализ программы

инициализация трёх переменных (скорости speed, времени time и счётчика цикла

count реализуется до начала цикла;
условие speed < 60 определяет возможность выполнения цикла, и пока скорость остаётся меньше 60, условие истинно и скорость будет нарщиваться;
управление условием реализуется оператором speed += 10;
тело цикла составляют операторы вывода на консоль и операторы приращения счётчика и времени.
Слайд 49

Слайд 50

Найти сумму ряда N натуральных чисел, не превышающих произвольного числа M

Найти сумму ряда N натуральных чисел, не превышающих произвольного числа M

Слайд 51

Оператор цикла с постусловием Общий вид do ; while ( );

Оператор цикла с постусловием

Общий вид
do
<оператор> ;
while (<логическое выражение>);

Выполнять

До тех пор,

пока

Условие повторения цикла

Тело цикла

Слайд 52

#include #include using namespace std; int main() { int S, i,N,M;

#include
#include
using namespace std;
int main()
{
int S, i,N,M; S=0; i=0;


cout<< "Ведите длину ряда "; cin>>N;
cout<< "Введите число М "; cin>>M;
do
{
i++;
S+=i;
}
while (Scout<< "Сумма ряда= "<return 0;
}
Слайд 53

Слайд 54

Технология программирования задачи с оператором цикла do-while Составить программу: Вычислить с

Технология программирования задачи с оператором цикла do-while

Составить программу:
Вычислить с заданной

точностью сумму членов бесконечного ряда:
Условие прекращения вычислений
Sn - Sn-1 = < δ − малое число больше нуля.
Выбор идентификаторов:
Входной Параметр цикла Выходной
δ → d, n → n, S → s
Слайд 55

int main( ) { cout double d; cin >> d; double

int main( )
{
cout << "d: ";
double d; cin >>

d;
double s = 0;
double n = 1;
do
{
s += 1 / n;
n ++;
} while (1 / n > d);
cout << "n = " << n << " s = " << s << endl;
}

Sn - Sn-1 = < δ

0

+ 1/1

+ 1/2

+ 1/3

1

+ 1

+ 1

+ 1

1

2

3

4

1

0.5

0.3333

0.25

1.0000

1.5000

1.8333

// Заголовок функции

// Начало кода функции

// Вывод ответа

0,3

1.8333

Слайд 56

Генерация псевдослучайных чисел средствами языка С++

Генерация псевдослучайных чисел средствами языка С++

Слайд 57

Функции работы со случайными числами Случайные числа на языке программирования С++

Функции работы со случайными числами

Случайные числа на языке программирования С++ могут

быть сгенерированы функцией rand() из стандартной библиотеки cstdlib.
Функция rand() генерирует числа в диапазоне от 0 до RAND_MAX.
RAND_MAX — это константа, определённая в библиотеке .
Для Microsoft Visual Studio: RAND_MAX = 32767, но оно может быть и больше, в зависимости от компилятора.
Слайд 58

Для того чтобы масштабировать интервал генерации чисел нужно воспользоваться, операцией нахождения

Для того чтобы масштабировать интервал генерации чисел нужно воспользоваться, операцией нахождения

остатка от деления «%«.
// пример масштабирования диапазона генерации случайных чисел
rand() % 3 +1 // диапазон равен от 1 до 3 включительно
Число 3 является масштабируемым коэффициентом. То есть, какое бы не выдал число генератор случайных чисел rand() запись rand() % 3 в итоге выдаст число из диапазона от 0 до 2. Для того чтобы сместить диапазон, мы прибавляем единицу, тогда диапазон изменится на такой — от 1 до 3 включительно.
Слайд 59

#include using namespace std; #include int main() { cout cout cout return 0; }

#include
using namespace std;
#include
int main()
{
cout << "RAND_MAX = "

<< RAND_MAX << endl; // константа, хранящая максимальный предел из интервала случайных чисел
cout << "random number = " << rand() << endl; // запуск генератора случайных чисел
cout < return 0;
}
Слайд 60

Слайд 61

rand() сгенерирует случайное число один раз, при первом запуске программы. В

rand() сгенерирует случайное число один раз, при первом запуске программы. В

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

Функции работы со случайными числами Чтобы функция rand() всегда возвращала разные

Функции работы со случайными числами

Чтобы функция rand() всегда возвращала разные числа,

её нужно использовать в паре с функцией srand().
Функция srand() получив целый положительный аргумент типа unsigned или unsigned int (без знаковое целое) выполняет рандомизацию, таким образом, чтобы при каждом запуске программы функция srand() генерировала случайные числа.
Слайд 63

Синтаксис: srand(unsigned int арг). Аргумент арг задаёт то стартовое число, на

Синтаксис: srand(unsigned int арг).
Аргумент арг задаёт то стартовое число, на

базе которого и создаётся база случайных чисел.
Пример:
unsigned rand_value = 11;
srand(rand_value); // рандомизация генератора случайных чисел
Или srand(11)
Слайд 64

Слайд 65

В строке 7 выполняется функция srand(), которая принимает в качестве аргумента

В строке 7 выполняется функция srand(), которая принимает в качестве аргумента целое положительное число

11. При первом запуске мы получили случайные числа, и при последующих запусках программы мы видим всё те же числа. Так вот, чтоб каждый раз генерировались новые случайные числа необходимо, что бы менялся аргумент в функции srand().
Слайд 66

Чтобы производить рандомизацию автоматически, то есть, не меняя каждый раз аргумент

Чтобы производить рандомизацию автоматически, то есть, не меняя каждый раз аргумент

в функции srand() нужно воспользоваться функцией time() с аргументом 0.
srand( time(0) );
Чтобы использовать функцию time(), необходимо подключить заголовочный файл .
Слайд 67

Слайд 68

Особенности работы функции srand() Чаще всего в качестве передаваемой величины в

Особенности работы функции srand()

Чаще всего в качестве передаваемой величины в функцию

srand() используют системное время в секундах, т.к. это число будет всегда разным, а соответственно, мы будем получать на выходе из rand() разные случайные числа.
Чтобы передать в функцию srand() текущее системное время, можно использовать библиотечную функцию time(), описанную в библиотеке .
Для того, чтобы эта функция возвращала текущее время в секундах (секунды отсчитываются от 00:00:00), нужно вызывать ее с параметром NULL: srand(time(NULL)); или srand(time(0));.
Если нет необходимости в формировании всегда разных случайных чисел, то функцию srand можно задать с любой константой или вовсе не включать её в программу.
Слайд 69

Пример 1. Инициализация массива случайными числами в заданном диапазоне значений: от

Пример 1. Инициализация массива случайными числами в заданном диапазоне значений: от

-10 до 10.

tf[i] = rand( ) % (r_max - r_min+1) + r_min;

Слайд 70

#include #include using namespace std; // функция инициализации массива случайными числами

#include
#include
using namespace std;
// функция инициализации массива случайными числами
int main()
{
int

tf [10], nf, r_min, r_max;
nf = 10;
cout<< “Inpiut min and max limit values:”; cin>>r_min>>r_max;
srand( (unsigned int) time( NULL ) ); // рандомизация генератора
for (int i = 0; i < nf; i++ ) // n - количество чисел
tf[i] = rand( ) % (r_max - r_min+1) + r_min; // формирование случайного числа
for (int i = 0; i < nf; i++ ) cout<<'\t'<< tf[i]; cout<return 0;
}

Функция rand генерирует случайные числа, возвращает псевдослучайное целое число в диапазоне от 0 до RAND_MAX.
RAND_MAX это константа, определенная в . По умолчанию её значение может изменяться, в зависимости от реализации, но, как правило, макрос RAND_MAX меньше значения 32767 не бывает.

Создание базы случайных чисел на основе Time (NULL)

Слайд 71

Пример 1. Определить количество цифр в числе N, заданным случайным образом.

Пример 1. Определить количество цифр в числе N, заданным случайным образом.

#include
#include
#include
using

namespace std;
int main()
{int Number,M,N, count;
srand(10);
cout<< " What is the maximal value of the Number?";
cin>>M;
N=rand()%M;
Number=N;
Слайд 72

// Метод - цикл с делением count = (Number == 0)

// Метод - цикл с делением
count = (Number == 0) ?

1 : 0;
while (Number != 0)
{
count++;
Number /= 10;
}
cout<<"\nCounts of digits in the number "<
Слайд 73

// Метод - десятичный логарифм и округление // хорош для очень

// Метод - десятичный логарифм и округление
// хорош для очень больших

чисел.
N=rand()%M;
Number=N;
count=(Number == 0) ? 1 : (int)ceil(log10(abs(Number) + 0.5));
cout<<"\nCounts of digits in the number "<system("pause");
return 0;
}
Слайд 74

Пример 2. Паук находится на плоскости в точке с координатами x=50

Пример 2. Паук находится на плоскости в точке с координатами x=50

и y=50. Каждую секунду он делает шаг влево, вправо, вниз или вверх с равной вероятностью. Смоделируйте движение паука с помощью генератора случайных чисел.
Координаты x(t) и y(t) сохраните в одномерных массивах. Напечатайте траекторию паука в виде таблицы, которая содержит в клеточке с координатами x и y символ “.”, если там паук не был, “+”, если паук там побывал 1 раз, “*”- для двух раз, “#” - для трёх и символ “@” -, если он побывал больше раз.
Слайд 75

Блок инициализации #include #include #include using namespace std; int main() {

Блок инициализации
#include
#include
#include
using namespace std;
int main()
{
cout << " Случайное блужданиепо плоскости." <<

endl;
const int N=61, K=1550, J=1;
char buf[N+1]; ];// массив символов ~ количество посещений
int xy[N][N];// массив для хранения количества посещений клетки N,N
int x=N/2;// ставим курсор в середину консоли
int y=N/2;
Слайд 76

// Заполнение двумерного массива значениями при // моделировании движения паука for(int

// Заполнение двумерного массива значениями при
// моделировании движения паука
for(int m=0;

m for(int n=0; n xy[m][n]=0;
xy[x][y]=1;
// запись координат движения паука в массив
for(int k=1; k {
for(int j=0; j x+=rand()%3-1;//формирование сл.чисел от -1 до 1
for(int j=0; j y+=rand()%3-1;
Слайд 77

//проверка выхода к границам if(x if(x>N-1)x=N-1; if(y if(y>N-1)y=N-1; xy[x][y]+=1; // отметка

//проверка выхода к границам
if(x<0)x=0;
if(x>N-1)x=N-1;
if(y<0)y=0;
if(y>N-1)y=N-1;
xy[x][y]+=1; // отметка о посещении точки в массиве
}

Слайд 78

// Заполнение символьного массива for(int m=0; m { for(int n=0; n

// Заполнение символьного массива
for(int m=0; m {
for(int n=0; n switch(xy[m][n])
{
case 0:

buf[n]='.'; break;
case 1: buf[n]='+'; break;
case 2: buf[n]='*'; break;
case 3: buf[n]='#'; break;
default: buf[n]='@';
}
buf[N]='\0';// ставим конец строки
Слайд 79

// Выводим символьный массив на консоль cout } cout system("pause"); return 0; }

// Выводим символьный массив на консоль
cout << buf << endl;
}
cout<< endl;
system("pause");
return

0;
}
Слайд 80

Краткие итоги Оператор for на С++ состоит из четырёх секций: инициализации,

Краткие итоги

Оператор for на С++ состоит из четырёх секций: инициализации, условия,

тела цикла, приращение. Любая из секций может быть опущена с соблюдением синтаксиса, позволяя гибко строить алгоритм, используя этот компактный и многофункциональный оператор.
Условные операторы while и do-while по эффективности эквиваленты оператору for, удобны при описании условных алгоритмов.
Оператор for необходим при работе с элементами массивов, при вычислении сумм конечных рядов, при любых алгоритмах, где используется счётчик при заранее известном количестве итераций.
При алгоритмизации задач с бесконечными рядами можно использовать любые типы циклов, однако while и do-while многими полагаются как более наглядные.
Рекуррентные формулы при вычислении сумм длинных рядов не только позволяют избегать операций прерывания, но и существенно экономят процессорное время.
Для оценки времени удобно пользоваться функций clock.
Формула для формирования числа в заданном диапазоне значений

tf[i] = rand( ) % (r_max - r_min+1) + r_min;