Для того, чтобы эта программа заработала надо добавить перед описанием процедуры F следующую строчку: procedure G(n: integer);forward; Так как в процедуре F есть вызов процедуры G описанной дальше по тексту программы. После исправления кода и запуска программы с F(12) получим 17 звездочек. По шагам это будет выглядеть так:
Вызов процедуры F и выполнение * n = 12 * n = 12 Вызов процедуры G и выполнение * n = 11 * n = 11 Вызов процедуры F и выполнение * n = 9 * n = 9 Вызов процедуры G и выполнение * n = 8 * n = 8 Вызов процедуры Fи выполнение * n = 6 * n = 6 Вызов процедуры G и выполнение * n = 5 * n = 5 Вызов процедуры F и выполнение * n = 3 * n = 3 Вызов процедуры G и выполнение * n = 2 * n = 2 Вызов процедуры F и выполнение * n = 0
procedure G(n: integer);forward;
Так как в процедуре F есть вызов процедуры G описанной дальше по тексту программы.
После исправления кода и запуска программы с F(12) получим 17 звездочек. По шагам это будет выглядеть так:
Вызов процедуры F и выполнение
* n = 12
* n = 12
Вызов процедуры G и выполнение
* n = 11
* n = 11
Вызов процедуры F и выполнение
* n = 9
* n = 9
Вызов процедуры G и выполнение
* n = 8
* n = 8
Вызов процедуры Fи выполнение
* n = 6
* n = 6
Вызов процедуры G и выполнение
* n = 5
* n = 5
Вызов процедуры F и выполнение
* n = 3
* n = 3
Вызов процедуры G и выполнение
* n = 2
* n = 2
Вызов процедуры F и выполнение
* n = 0
количество единиц = 6
2) 11001011(2) = 128+64+8+2+1 = 203(10)
11111000(2) = 128+64+32+16+8 = 248(10)
11011011(2) = 128+64+16+8+2+1 = 219(10)
10011111(2) = 128+16+8+4+2+1 = 159
11100100(2) = 128+64+32+4 = 228(10)
D4(16)+20(8) = 13*16+4 + 2*8 = 212+16 = 228(10)
Только одно число больше 228(10):
это 11111000(2) = 128+64+32+16+8 = 248(10)
3) 11011100(2) = 128+64+16+8+4 = 220(10)
DF(16) = 13*16+15 = 208+15 = 223(10)
Количество чисел, удовлетворяющих неравенству - два (221 и 222).