В заданном числе определить цифру, которая встречается чаще всех - QBasic

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

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

Дано число 149162536496481100 ... 1000000. (это запись квадратов всех натуральных чисел от 1 до 1000) Определить самую высокочастотную цифру и ее количество решение программа сосчитала, что такая цифра 4 и встречается 700 раз. Вопросы 1. насколько разумно приведенное решение? 2. есть ли иное (любое) решение?
Листинг программы
  1. REM
  2. REM 4 (700)
  3. REM
  4. DECLARE FUNCTION SS$ (n!)
  5. DECLARE FUNCTION Col! (t AS STRING)
  6. CLS
  7. DIM SHARED s AS STRING
  8. DIM t AS STRING
  9. CLEAR , , 20000
  10. FOR i = 1 TO 1000
  11. s = s + SS(i ^ 2)
  12. NEXT
  13. FOR n = 0 TO 9
  14. t = SS(n)
  15. m = Col(t)
  16. IF max < m THEN
  17. max = m
  18. nmax = n
  19. END IF
  20. NEXT
  21. PRINT "MAX ="; max
  22. PRINT "N ="; nmax
  23. END
  24. FUNCTION Col (t AS STRING)
  25. DO WHILE INSTR(s, t)
  26. m = INSTR(s, t)
  27. MID$(s, m, 1) = "+"
  28. k = k + 1
  29. LOOP
  30. Col = k
  31. END FUNCTION
  32. FUNCTION SS$ (n)
  33. SS = LTRIM$(STR$(n))
  34. END FUNCTION

Решение задачи: «В заданном числе определить цифру, которая встречается чаще всех»

textual
Листинг программы
  1. DIM a(9) AS LONG, n AS LONG, m AS LONG, mx AS LONG, i AS LONG, k AS LONG
  2. FOR i = 1 TO 1000
  3.     n = i * i
  4.     DO
  5.         m = n MOD 10
  6.         a(m) = a(m) + 1
  7.         n = n \ 10
  8.     LOOP WHILE n
  9. NEXT i
  10. mx = a(0)
  11. FOR i = 1 TO 9
  12.     IF a(i) > mx THEN mx = a(i): k = i
  13. NEXT i
  14. PRINT k

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

  1. Переменная a объявлена как массив из 9 элементов типа LONG (целое число).
  2. Переменная n инициализируется значением i * i, где i — это номер текущего числа от 1 до 1000.
  3. Переменная m инициализируется значением остатка от деления n на 10.
  4. В цикле DO-LOOP WHILE происходит деление n на 10 и последующее наращивание значения переменной m до тех пор, пока n не станет равным 0.
  5. В каждой итерации цикла значение переменной m увеличивается на 1, что соответствует определению текущей цифры числа.
  6. Значение переменной a соответствующее текущей цифре увеличивается на 1.
  7. После завершения цикла, в переменной mx хранится максимальное количество повторений цифр в числе, а в переменной k — номер этой цифры в массиве a.
  8. В цикле FOR перебираются значения от 1 до 9, при этом проверяется, является ли текущее значение переменной a больше значения переменной mx. Если это так, то значение переменной mx обновляется, а значение переменной k присваивается текущему индексу.
  9. После завершения цикла, выводится значение переменной k, которое соответствует номеру цифры, встречающейся в числе наибольшее количество раз.

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


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

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

13   голосов , оценка 3.692 из 5

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

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

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