упражнение №8

Цикъл for

Най-мощният оператор за цикъл в С++ е оператора for. Този оператор се използва в случаите, в които броят на итерациите е предварително определен. Той прилича на оператора за цикъл с предусловие по това, че първо се проверява условието  и ако то е вярно,  се изпълнява тялото. Употребата му се подчинява на следният синтаксис:

 


for(   начални стойности   ;   условие за изпълнение на цикъла   ;   изрази    )

             тяло на цикъла

Тялото на цикъла може да съдържа прост оператор, блок-оператор или празен оператор (само точка и запетая).

Синтаксисът на цикъла for включва 3 елемента:

-     начални стойности  - задават се начални стойности на променливи, като  отделните изрази се разделят със запетаи;

-      условие за изпълнение на цикъла   - булев израз;

-      изрази    - (стъпка на цикъла) задават се изрази за изчисление, като се разделят със запетаи;

G ВНИМАНИЕ! Всеки един от първите три елемента може да бъде пропуснат, но обикновените скоби и двете точки и запетаи са задължителни.

При изпълнение на цикъла for първо се изчисляват началните стойности (еднократно), след което се проверява условието (булевият израз има стойност 1) , ако е изпълнено(булевият израз има стойност 1)  се пристъпва към изпълнение на тялото на цикъла. Изчисляват се изразите и отново се проверява условието. Ако условието не е изпълнено, управлението се предава на първия оператор след тялото на цикъла (фиг.1).

 

 

 

 

 

 

 

 

 


Пример:

Фрагмента от програма, изчисляващ сумата на числата от 1 до n може да се запише по няколко начина:

І начин – в трите елемента на цикъла for  има по един израз:

        cout<<”n=;  coin>>n;

       s=0;

for(Br=1;Br<=n;Br++)

s+=Br;

ІІ начин – в първи и трети елемент на цикъла for  има по два израза и тялото на цикъла е празен оператор:

        cout<<”n=;  coin>>n;

for(s=0,Br=1;Br<=n;Br++,s+=Br)

;

ІІІ начин - в първи и трети елемент на цикъла for няма изрази:

        cout<<”n=;  coin>>n;

       s=0;

       Br=1;

for(;Br<=n;)

{     Br++;

s+=Br;

            }

G ВНИМАНИЕ! Възможно е да се дефинира безкраен цикъл for:

for(;;)

                             тяло на цикъла                                                 ,

но в такъв случай трябва да се осигури напускане на цикъла при удовлетворяване на определено условие вътре в тялото на цикъла.

Пример

Тялото на цикъла се напуска при въвеждане на стойност 0 за променливата х.

       s=0;

for(;;)

{

              cout<<”x=;  coin>>x;

             if (x==0) break;

s+=x;

               }

Зад.1 Да се напише програма, която намира сумата на целите числа от 1 до n, като n се въвежда от клавиатурата (1 £ n £ 30000). (т.1, задача 1)

Решение

Необходими са три променливи:

n - за крайното число;

i - за управляващата променлива на цикъла, като тя ще съдържа  и текущото число, което ще се добавя;

s - за натрупване на сумата.

Преди да се започне сумирането, променливата s се нулира (s:=0). При всяко изпълнение на тялото на цикъла към старата сума се добавя новата стойност на i (s=s+i), след което стойността на i се намалява с 1. Цикълът се напуска, когато стойността на i стане равна на 0.

Блоковата схема на алгоритъма на тази задача е показана на фиг.2.

 

Ò

 

 

 

 

 

#include <iostream.h>

void main(void)

{

  int i,n;

  long int s;   

  do{ 

     cout<<”n=;  cin>>n;

  }while (n<1 || n>30000);

 

  for(s=0,i=1;i<=n;i++)

 

     s+=i;

 

  cout<<”s=”<<s<<”\n”;

}

 

 

 

Зад.2 Да се напише програма, която въвежда n на брой числа от клавиатурата и намира тяхната сума (1 £ n £ 1000). (т.1, задача 3)

 

 

Зад.3 Да се напише програма, която въвежда n на брой числа от клавиатурата и намира сумата само на онези от тях, които са  положителни (1 £ n £ 1000). ( т.1, задача 5)

 

Зад.4 Да се напише програма, която въвежда n на брой числа от клавиатурата и намира средноаритметичната стойност на онези от тях, които са положителни (1 £ n £ 1000). (т.1, задача 6)

 

 

Зад.5 Да се напише програма, която намира произведението на числата от 1 до n, като n се въвежда от клавиатурата (n £ 33). (т.1, задача 2)

 

 

ЗАДАЧИ ЗА САМОСТОЯТЕЛНА РАБОТА

Œ        Да се напише програма, която въвежда n(n£10) на брой числа, по-малки от 100, и намира тяхното произведение.

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

Ž               Да се напише програма, която въвежда n(n£10) на брой числа, по-малки от 100, и намира произведението  на онези от тях, които са различни от нула.

       Да се напише програма, която въвежда n на брой числа от клавиатурата и намира сумата на онези от тях, които са по-големи от дадено число к.

        Да се напише програма, която въвежда n на брой числа от клавиатурата и намира средноаритметичната стойност на онези от тях, които са по-големи от предварително зададено число к.

        Да се напише програма, която въвежда n на брой числа от клавиатурата и намира средноаритметичната стойност на онези от тях, които са по-малки от дадено число к.

       Да се напише програма, която въвежда n на брой числа от клавиатурата и намира средноаритметичната стойност на онези от тях, които са по-малки от дадено число u и по-големи от дадено число v (u>v).

       Годишната лихва в една банка е Р%. Ако в началото на годината са внесени L лева, да се пресметне каква сума може да се изтегли след N години.

 

 

à   Ä   Ç