Определите, что будет напечатано в результате работы следующего фрагмента программы:
| Бейсик | Python |
|---|---|
DIM K, S AS INTEGER S = 2 K = 2 WHILE S < 50 S = S + K K = K + 2 WEND PRINT K
| s = 2 k = 2 while s < 50: s += k k += 2 print(k)
|
| Паскаль | Алгоритмический язык |
var k, s: integer; begin s:=2; k:=2; while s < 50 do begin s:=s+k; k:=k+2; end; write(k); end.
| алг нач цел k, s s := 2 k := 2 нц пока s < 50 s := s + k k := k + 2 кц вывод k кон |
| Си++ | |
#include <iostream> using namespace std; int main() { int s, k; s = 2, k = 2; while (s < 50) { s = s + k; k = k + 2; } cout << k << endl; return 0; }
| |
Цикл while выполняется до тех пор, пока истинно условие s < 50, т. е. переменная s определяет, сколько раз выполнится цикл.
Значение s есть сумма первых n членов арифметической прогрессии. b — сумма первых n членов прогрессии, d — разность прогрессии, n — количество членов.
Цикл прервется, когда
Выясним n:
(т. к. k:=k+2). Чтобы решить это неравенство, нам необходимо решить квадратное уравнение:
Среди его корней нас интересуют только положительные, следовательно,
Воспользовавшись методом интервалов, находим, что первое натуральное n, при котором нарушается условие, есть
Так как операция k:=k+2; идет после s:=s+k; то цикл выполнится еще раз, следовательно,
Подставив известные параметры, получаем, что

