Строка из натуральных чисел (2) - QBasic

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

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

Дана строка, построенная из последовательных натуральных чисел от 1 до 4027. (12345678910111213141516171819 ... 4027) Требуется вычислить длину новой строки, выкидывая из исходной все повторяющиеся подряд цифры. Пример. Строка 1333344477778. Новая строка 13478 (ответ 5) Эта программа сосчитала, что новая строка будет иметь длину 13497 цифр. Так ли это? (я тоже могу ошибаться)
Листинг программы
  1. REM
  2. REM 123456789101112 ... 4027
  3. REM (длина числа 15001 цифр)
  4. REM OTBET: 13497
  5. REM
  6. DECLARE FUNCTION STO$ (n!)
  7. DECLARE FUNCTION M$ (n!)
  8. CLS
  9. DIM SHARED s AS STRING
  10. FOR i = 1 TO 4027
  11. s = s + STO(i)
  12. NEXT
  13. FOR i = 1 TO 15000
  14. IF M(i) = M(i + 1) THEN k = k + 1
  15. NEXT
  16. PRINT LEN(s) - k
  17. END
  18. FUNCTION M$ (n)
  19. M = MID$(s, n, 1)
  20. END FUNCTION
  21. FUNCTION STO$ (n)
  22. STO = LTRIM$(STR$(n))
  23. END FUNCTION

Решение задачи: «Строка из натуральных чисел (2)»

textual
Листинг программы
  1. uses sysutils;
  2.  
  3. var
  4.   s : string;
  5.   i, j, len : integer;
  6.   ch : char;
  7.  
  8. begin
  9.   ch := #0;
  10.   for i := 1 to 4027 do
  11.   begin
  12.     s := inttostr(i);
  13.     for j := 1 to length(s) do
  14.       if s[j] <> ch then
  15.       begin
  16.         ch := s[j];
  17.         inc(len);
  18.       end;
  19.   end;
  20.   writeln(len);
  21. end.

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

В этом коде используется язык программирования QBasic. Цель программы - найти наибольшую возможную длину строки, состоящей только из возрастающих чисел. В начале кода объявляются следующие переменные:

  1. s - строковая переменная, в которой будет храниться строка из чисел.
  2. i, j, len - целочисленные переменные, используемые для контроля цикла и подсчета длины строки.
  3. ch - символ, инициализированный нулевым символом. Затем следует цикл, который выполняется 4027 раз (это неслучайное число, оно используется для создания строки из всех натуральных чисел от 1 до 4026). Внутри цикла сначала переменная s преобразуется в строку текущего числа. Затем идет цикл по всем символам строки s. Если текущий символ не равен символу ch, то он становится новым значением ch, и переменная len увеличивается на 1. После завершения всех внутренних циклов, выводится значение переменной len - это и есть наибольшая возможная длина строки из возрастающих чисел. Важно отметить, что этот код не генерирует строку из чисел, он лишь находит длину такой строки. Если вам нужна сама строка, вы можете модифицировать код, добавив дополнительный цикл, который будет добавлять символы к переменной s.

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


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

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

12   голосов , оценка 4.417 из 5

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

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

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