Необходимо перевести программу с 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.

Объяснение кода листинга программы

  1. Объявлены три переменные: f, n, k типа Longint, Byte, Byte соответственно.
  2. Переменная n инициализируется значением, которое считывается из стандартного ввода с помощью процедуры ReadLn.
  3. Переменная f инициализируется значением 2.
  4. Запускается цикл while, который выполняется до тех пор, пока значение переменной n больше значения переменной f.
  5. Внутри цикла переменная k увеличивается на значение переменной n, деленное на значение переменной f.
  6. Значение переменной f увеличивается вдвое.
  7. По завершении цикла выводится значение переменной k с помощью процедуры WriteLn.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы