Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Цикл с параметром (цикл for)

Поиск

Параметризованным циклом (циклом с параметром) называется цикл, который выполняется строго определенное количество раз, причем число проходов задается параметром – счетчиком – значение которого изменяется последовательно от наименьшего к наибольшему (или наоборот) с заданным шагом.

Параметризованный цикл есть практически во всех языках программирования, но в С++ его синтаксис самый насыщенный и гибкий:

for (инициализации; условие; операторы) оператор_тела_цикла;

где

· инициализации – это действия, которые выполняются один раз перед входом в цикл. Обычно сюда помещают определение переменной-счетчика, и реже – инициализацию других переменных. Если мы вставляем сюда несколько операторов, они перечисляются через запятую.

· условие – то самое условие, которое проверяется каждый раз при входе в цикл; тело цикла выполняется, если условие истинно.

· операторы – те действия, которые выполняются в конце цикла, перед новым его шагом, то есть после оператора_тела_цикла. Чаще всего это операторы изменения параметра цикла, но вообще говоря, сюда можно вставить что угодно. Если мы размещаем здесь несколько операторов, то через запятую.

Например, вот этот цикл выполнится 10 раз, но оператор_тела_цикла отсутствует, поэтому цикл прокрутится вхолостую:

for (int i=0; i<10; i++);

А вот этот цикл не выполнится ни одного раза

for (int i=0; i>10; i--);

А здесь мы объявляем две переменные и добавляем оператор_тела_цикла, причем оператор изменения счетчика оставляем внутри заголовка цикла for:

for (int i=1, count=1; i<7; i++)

count=count*i;

Если в теле цикла должно стоять больше одного оператора, нужно использовать операторные скобки:

for (int i=0, a=0, b=100; i<10; i++)

{

a=a+b;

b=a*a;

}

Если какая-то часть заголовка цикла отсутствует, разделяющие точки с запятой все равно должны ставиться:

int i=0;

for (; i<10;) 

i++;

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

Теперь организуем вечный цикл:

for (;;);          // крайний случай отсутствия условий

for (int i=0; i<10;); // параметр не изменяется

for (int i=0; i<10; i--);

Последний цикл, на самом деле, не вечный из-за того, что мы имеем дело не с бесконечными, а с компьютерными – двоичными числами: помните про побитовый состав числа? Если отнять единицу у наименьшего числа (00000000), оно станет наибольшим (11111111), а значит большим 10, и цикл завершится.

Пример. Вывод на экран квадратов и кубов целых чисел от 1 до 8.

#include <stdio.h>

void main()

{

int i, i2, i3;

for (i=1; i<=8; i++)

{

i2 = i*i;

i3 = i2*i;

printf("%4d %4d %4d\n", i, i2, i3);

}

}

или

#include <stdio.h>

void main()

{

for (int i=1; i<=8; i++)

printf("%4d %4d %4d\n", i, i*i, i*i*i);

}

Пример. Вывод на экран квадратов и кубов целых чисел от 8 до 1 (в обратном порядке).

#include <stdio.h>

void main()

{

for (int i=8; i>=1; i--)

printf("%4d %4d %4d\n", i, i*i, i*i*i);

}

Пример. Программа для вывода таблицы значений функции y = x 2+1 во введенном диапазоне.

#include <stdio.h>

void main()

{

float X0, Xn, Dx;

printf("Введите диапазон и шаг изменения аргумента: ");

scanf("%f%f%f", &X0,&Xn,&Dx);

printf("| X | Y |\n");

for (float X=X0; X<=Xn; X+=Dx)

  printf("| %5.2f | %5.2f |\n", X, X*X + 1);

}

Пример. Программа вычисления факториала натурального числа.

Факториал (!) числа есть произведение последовательности целых чисел, например 5!=1×2×3×4×5=120. При накапливании произведения следует помнить, что начальным значением для переменной будет не нуль (иначе произведение всегда будет равно нулю), а единица.

#include <stdio.h>

void main()

{

int n;

long int f=1;

printf("Введите натуральное n<=12\n");

scanf("%d", &n);

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

f=f*i;

printf("факториал числа %d равен %d\n", n,f);

}

Пример. Программа для вывода на экран делителей натурального числа n и подсчета их количества.

#include <stdio.h>

void main()

{

int n, k=0; // n – вводимое число, k – количество делителей

printf("Введите натуральное число\n");

scanf("%d",&n);

printf("Делители числа:\n");

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

 if (n%i==0) 

{

  k++;

 printf("%d ", i);

}

printf("\nКоличество делителей равно %d\n", k);

}

Пример. Программа вычисления суммы конечного ряда , т.е. сумму первых n членов последовательности   (k = 1, 2, 3.., n).

#include <stdio.h>

void main()

{

int n;

float S=0.0;

printf("n=");

scanf("%d", &n);

for (int k=1; k<=n; k++)

S=S+1.0*k/(3*k*k+5);

printf("S=%f\n", S);

}



Поделиться:


Последнее изменение этой страницы: 2021-01-08; просмотров: 96; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.161.199 (0.005 с.)