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

Циклични алгоритми

 

Циклични  алгоритми са тези, при които определена последователност от действия може да се изпълнява многократно.

С++ предлага три оператора за цикъл, които могат да се използват в различни специфични случаи.

1.   Цикъл с предусловие

Циклите с предусловие в С++ се реализират с помощта на оператора 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).

 

 

 

à   Ä   Ç