У дадзеным пункце разгледзім магчымасць ужывання ўсіх трох відаў цыклаў для рашэння адной задачы.
Прыклад 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 (i >= n && i % x)
i--;
if (i == n - 1)
cout << "net takih" << endl;
else
cout << "naideno - " << i << endl;
return 0;
}
|
Фрагмент рашэння з цыклам do…while:
///do...while
int i = m + 1;
do
i--;
while (i >= n && i % x);
if (i == n - 1)
cout << "net takih" << endl;
else
cout << "naideno - " << i << endl;
|
Фрагмент рашэння з цыклам for:
///for
int z = -1;
for (int i = m; i >= n; i--)
if (i % x == 0) {
z = i;
break;
}
if (z == - 1)
cout << "net takih" << endl;
else
cout << "naideno - " << z << endl;
|
VI. Тэсціраванне.


|