Необходимо перевести программу с Pascal ABC на free pascal

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. var a, factorial:longint;
  2. const c:array [0..1] of char= ('0','1');
  3. var res:string;
  4. d:0..1;
  5. k, n, i:byte;
  6. begin
  7. assign(input, 'input.txt');
  8. assign(output, 'output.txt');
  9. reset(input);
  10. rewrite(output);
  11. readln(n);
  12. factorial := 1;
  13. for i:=2 to n do
  14. factorial := factorial * i;
  15. a:=factorial;
  16. res:='';
  17. k:=0;
  18. while a<>0 do
  19. begin
  20. d:=a mod 2;
  21. if d=0 then k:=k+1;
  22. res:=c[d]+res;
  23. a:=a div 2;
  24. end;
  25. write(k);
  26. readln
  27. end.

Решение задачи: «Необходимо перевести программу с Pascal ABC на free pascal»

textual
Листинг программы
  1. var
  2.   f: Longint;
  3.   n, k: Byte;
  4. begin
  5.   ReadLn(n); f:=2;
  6.   while (n >= f) do
  7.   begin
  8.     Inc(k, n div f);
  9.     f := f*2;
  10.   end;
  11.  
  12.   WriteLn(k);
  13. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы