Необходимо перевести программу с Pascal ABC на free pascal
Формулировка задачи:
var a, factorial:longint; const c:array [0..1] of char= ('0','1'); var res:string; d:0..1; k, n, i:byte; begin assign(input, 'input.txt'); assign(output, 'output.txt'); reset(input); rewrite(output); readln(n); factorial := 1; for i:=2 to n do factorial := factorial * i; a:=factorial; res:=''; k:=0; while a<>0 do begin d:=a mod 2; if d=0 then k:=k+1; res:=c[d]+res; a:=a div 2; end; write(k); readln end.
Решение задачи: «Необходимо перевести программу с Pascal ABC на free pascal»
textual
Листинг программы
var f: Longint; n, k: Byte; begin ReadLn(n); f:=2; while (n >= f) do begin Inc(k, n div f); f := f*2; end; WriteLn(k); end.
Объяснение кода листинга программы
- Объявлены три переменные:
f
,n
,k
типа Longint, Byte, Byte соответственно. - Переменная
n
инициализируется значением, которое считывается из стандартного ввода с помощью процедуры ReadLn. - Переменная
f
инициализируется значением 2. - Запускается цикл while, который выполняется до тех пор, пока значение переменной
n
больше значения переменнойf
. - Внутри цикла переменная
k
увеличивается на значение переменнойn
, деленное на значение переменнойf
. - Значение переменной
f
увеличивается вдвое. - По завершении цикла выводится значение переменной
k
с помощью процедуры WriteLn.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д