Найти все натуральные числа, не превосходящие заданного m - Pascal

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

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

Пожалуйста, очень срочно надо написать программу на языке Pascal (Turbo или ABC). Найти все натуральные числа, не превосходящие заданного m, двоичная запись которых представляет собой симметричную последовательность нулей и единиц (начинающуюся с единицы). Показать десятичную и двоичную записи этих чисел.

Решение задачи: «Найти все натуральные числа, не превосходящие заданного m»

textual
Листинг программы
uses crt;
function DecToBin(n : word) : string;
var s : string;
begin
  s := '';
  while n>0 do begin
    s := chr(n mod 2 + 48) + s;
    n := n div 2;
  end;
  DecToBin := s;
end;
function Sim(s : string) : boolean;
var i : byte;
begin
  Sim := false;
  for i := 1 to length(s) div 2 do
    if s[i]<>s[length(s)-i+1] then exit;
  Sim := true;  
end;
var
  m, i: word;
begin
  clrscr;
  Write('Введите m = '); ReadLn(m);
  for i := 1 to m do 
    If Sim(DecToBin(i)) then writeln(i:5,DecToBin(i):10);
    
end.

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

  1. uses crt; — подключает модуль для работы с консолью
  2. function DecToBin(n : word) : string; — объявляет функцию для перевода числа в двоичное представление
  3. var s : string; — объявляет переменную для хранения строкового представления числа
  4. begin — начало блока кода функции
  5. s := ''; — инициализирует пустую строку для хранения результата
  6. while n>0 do begin — цикл, который выполняется, пока число больше нуля
  7. s := chr(n mod 2 + 48) + s; — добавляет в строку символ, соответствующий остатку от деления числа на 2 (в двоичной системе счисления), и текущую строку
  8. n := n div 2; — делит число на 2
  9. end; — конец цикла
  10. DecToBin := s; — присваивает результат функции переменной DecToBin
  11. function Sim(s : string) : boolean; — объявляет функцию для проверки четности/нечетности числа
  12. var i : byte; — объявляет переменную для хранения индекса символа в строке
  13. begin — начало блока кода функции
  14. Sim := false; — инициализирует функцию как нечетное число
  15. for i := 1 to length(s) div 2 do — цикл, который выполняется, пока индекс меньше половины длины строки
  16. if s[i]<>s[length(s)-i+1] then exit; — проверяет, равны ли текущий и обратный символы в строке, и если нет, то выходит из цикла
  17. Sim := true; — присваивает функции значение true, если цикл был выполнен до конца
  18. end; — конец блока кода функции
  19. var — объявляет переменные для хранения числа и его двоичного представления
  20. m, i: word;m — для хранения числа, i — для хранения индексов символов в строке
  21. begin — начало блока кода программы
  22. clrscr; — очищает экран
  23. Write('Введите m = '); ReadLn(m); — запрашивает у пользователя число m и сохраняет его в переменной
  24. for i := 1 to m do — цикл, который выполняется, пока индекс меньше числа m
  25. If Sim(DecToBin(i)) then writeln(i:5,DecToBin(i):10); — проверяет, является ли число i нечетным, и если да, то выводит его и его двоичное представление
  26. end; — конец блока кода программы

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


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

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

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