§ 5. Аператар цыкла

5.5. Рашэнне задач з выкарыстаннем аператара цыкла

У дадзеным пункце разгледзім магчымасць ужывання ўсіх трох відаў цыклаў для рашэння адной задачы.

Прыклад 5.9. Вывесці на экран найбольшы натуральны лік з прамежку [n, m], які дзеліцца на зададзены лік x, ці паведамленне «няма такіх лікаў».».

Этапы выканання задання

I. Зыходныя даныя: n, m (межы прамежку), x (зададзены лік).

II. Вынік: шуканы лік або паведамленне «няма такіх лікаў».

III. Алгарытм рашэння задачы.

1. Няхай i — бягучы лік з прамежку.
2. Паколькі нас цікавіць найбольшы лік з прамежку, то прагляд лікаў пачнём са значэння i = m. На кожным кроку будзем памяншаць i на 1
.
3. Цыкл завершыцца, калі мы знайшлі лік, які дзеліцца на x без астачы (астача роўна нулю), ці прагледзелі ўсе лікі з прамежку 
 [n, m].
4. Для рашэння з цыклам while — калі пасля заканчэння цыкла i = n – 1, то няма лікаў, якія задавальняюць умову задачы
.
5. Для рашэння з цыклам 
do…while — калі пасля заканчэння цыкла i = n – 1, то няма лікаў, якія задавальняюць умову задачы. Паколькі памяншэнне значэння i адбываецца да праверкі ўмовы, то пачатковае значэнне i = m + 1.
6. Для рашэння з цыклам for — калі лік знойдзены, выкарыстаем каманду break і перарвём выкананне цыкла. Значэнне знойдзенага ліку захаваем у пераменнай z, якой да пачатку работы цыкла прысвоім значэнне –1. Калі пасля заканчэння цыкла z засталося роўным –1, то лікі, якія задавальняюць умову задачы, не знойдзены
.

IV. Апісанне пераменных: n, m, x, i, z – int.

Прыклад 5.9.

V. Праграма (з цыклам  while):

#include <iostream>

 

using namespace std;

 

int main()

{

  int n, m, x;

  cout << "granicy" << endl;

  cin >> n >> m;

  cout << "x = ";

  cin >> x;

  ///while

  int i = m;

  while (>= n && i % x)

    i--;

  if (== n - 1)

    cout << "net takih" << endl;

  else

    cout << "naideno - " << i << endl;

  return 0;

}

Фрагмент рашэння з цыклам do…while:

  ///do...while

  int i = m + 1;

  do

    i--;

  while (>= n && i % x);

  if (== n - 1)

    cout << "net takih" << endl;

  else

    cout << "naideno - " << i << endl;

Фрагмент рашэння з цыклам for:

///for

  int z = -1;

  for (int i = m; i >= n; i--)

    if  (% x == 0) {

      z = i;

      break;

    }

  if (== - 1)

    cout << "net takih" << endl;

  else

    cout << "naideno - " << z << endl;

VI. Тэсціраванне.