ответ:команди тіла циклу, після чого знову обчислюється значення логічного виразу, і якщо це значення знову true, то знову виконуються команди тіла циклу, після чого знову обчислюється значення логічного виразу; якщо значення логічного виразу дорівнює false, то команди тіла циклу не виконуються, а виконується команда, наступна за циклом.
Звертаємо вашу увагу:
• якщо в тілі циклу лише одна команда, то операторні дужки begin і end можна не ставити;
• серед команд тіла циклу можуть бути й лінійні фрагменти, і розгалуження, й інші цикли.
Розглянемо задачу, алгоритм розв’язування якої містить цикл з передумовою.
Задача. Скільки потрібно взяти доданків, перший з яких дорівнює заданому д ійсному числу, а кожний наступний на 3 більший від попереднього, щоб їхня сума перевищила 100?
Даними цієї задачі є перший доданок. Вводитимемо його в поле.
Перед початком циклу присвоїмо змінній s, яку використаємо для збереження суми, значення першого доданка. А змінній п, яку використаємо для збереження кількості взятих доданків, присвоїмо значення 1, бо в сумі вже враховано один (перший) доданок.
До суми потрібно додавати наступні доданки, поки ця сума буде меншою, або дорівнюватиме 100. Тому логічний вираз у заголовку циклу матиме вигляд s <= 100. У тілі циклу шукатимемо наступний доданок, додаватимемо його до поточного значення суми і збільшуватимемо кількість доданих доданків на 1.
Объяснение:
begin
a := 0;
b := 1;
while x > 0 do
begin
a := a + 1;
b := b * (x mod 100);
x := x div 100;
end;
end;
var
x, a, b: integer;
begin
for x := 10000 to 2000000000 do
begin
GetAB(x, a, b);
if (a = 3) and (b = 18) then
Println(a, b, x);
end;
end.
выдает такие значения
3 18 10118
3 18 10209
3 18 10306
3 18 10603
3 18 10902
3 18 11801
3 18 20109
3 18 20303
3 18 20901
3 18 30106
3 18 30203
3 18 30302
3 18 30601
3 18 60103
3 18 60301
3 18 90102
3 18 90201
3 18 180101
Выделенное наибольшее