Циклични алгоритми са тези, при които определена последователност от действия може да се изпълнява многократно.
С++ предлага три оператора за цикъл, които могат да се използват в различни специфични случаи.
Циклите с предусловие в С++ се реализират с помощта на оператора while. Употребата му се подчинява на следния синтаксис:
while (
условие
за
изпълнение
на цикъла
)
тяло
на цикъла![]()
Пример:
while (n>0)
{
cout<<”n=”<<n<<”\n”;
n--;
}
Тялото на цикъла може да съдържа прост оператор, блок-оператор или празен оператор (само точка и запетая).
Като условие за изпълнение на цикъла се записва булев израз (изроз, който получава стойност истина – 1 или лъжа – 0).
Тялото на цикъла се изпълнява, ако условието се изпълнява. В противен случай се преминава към първия оператор след тялото на цикъла.
G ВНИМАНИЕ! В тялото на цикъла трябва да има оператори за промяна на изпълнението на условието. Така програмистът управлява изпълнението на цикъла. В противен случай ще настъпи зацикляне.
Този оператор за цикъл се използва в случаите, когато:
- броят на итерациите (повторенията) не е предварително определен;
- първо трябва да се провери условието и след това, ако то е вярно, да се изпълни тялото на цикъла.
Зад.1 Да се
напише
програма,
която намира
сумата на
целите числа
от 1 до n, като n
се въвежда от
клавиатурата.
Решение
Необходими са три променливи: n – за крайното число, Br - брояч, който следи до кое число сме стигнали и s – за натрупване на сумата. Преди да започне сумирането, променливата s, в която ще се натрупва сумата, трябва да се нулира (s=0). При всяко изпълнение на цикъл към старата сума се добавя новата стойност на Br (s=s+Br).
Типът на Br и n е int, на s – long int.
Ако променливата s е дефинирана като int, то максималната сума, която тя може да помести е 32767. Сумата на целите положителни числа до 256 включително (32896) надвишава тази сума. Затова s трябва да се дефинира като long int. Максималното за този тип данни число 2 147 483 647 е по-голямо от сумата при n=32767.
Блоковата
схема на
алгоритъма
на тази задача
е показана на
фиг.4.1.
Ò
#include <iostream.h>
void main(void)
{
int Br,n;
long int s;
cout<<”n=”; cin>>n;
s=0;
Br=1;
while (Br<=n)
{
s=s + Br;
Br++;
}
cout<<”s=”<<s<<”\n”;
}
Зад.2 Да се напише програма, която намира произведението на целите числа от 1 до n (n!), като n се въвежда от клавиатурата (n<34 ).
Зад.3 Да се напише програма, която въвежда n произволни числа от клавиатурата и намира тяхната сума (1£n£1000).
Зад.4 Да се напише програма, която въвежда n числа от клавиатурата и намира средноаритметичната им стойност (1£n£1000).
Зад.5 Да се напише програма, която въвежда n числа от клавиатурата и намира сумата само на онези от тях, които са положителни (1£n£1000).
Зад.6 Да се напише програма, която въвежда n на брой числа от клавиатурата и намира средноаритметичната стойност само на онези от тях, които са положителни (1£n£1000).
ЗАДАЧИ ЗА САМОСТОЯТЕЛНА РАБОТА
Да се напише програма, която въвежда n (n£10) на брой реални числа по-малки от 100 и намира тяхното произведение.
Да се напише програма, която въвежда n на брой числа от клавиатурата и намира сумата само на онези от тях, които са отрицателни.
Да се напише програма, която въвежда n (n£10) на брой реални числа по-малки от 100 и намира произведението на онези от тях, които са различни от нула.
Да се напише програма, която въвежда n на брой числа от клавиатурата и намира сумата само на онези от тях, които са по-големи от предварително зададено число к.
Да се напише програма, която въвежда n на брой числа от клавиатурата и намира сумата само на онези от тях, които са по-малки от предварително зададено число к.
Да се напише програма, която въвежда n на брой числа от клавиатурата и намира сумата само на онези от тях, които са по-малки от предварително зададено число u и по-големи от предварително зададено число v (u>v).
Да се напише програма, която въвежда n на брой числа от клавиатурата и намира средноаритметичната стойност само на онези от тях, които са по-големи от предварително зададено число к.
Да се напише програма, която въвежда n на брой числа от клавиатурата и намира средноаритметичната стойност само на онези от тях, които са по-малки от предварително зададено число к.
Да се напише програма, която въвежда n на брой числа от клавиатурата и намира средноаритметичната стойност само на онези от тях, които са по-малки от предварително зададено число u или по-големи от предварително зададено число v(u<v).