Необходимо перевести программу с 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д