С Новым годом! Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8

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

11.10.2016, 18:52. Показов 1225. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано число 149162536496481100 ... 1000000.
(это запись квадратов всех натуральных чисел от 1 до 1000)
Определить самую высокочастотную цифру и ее количество
решение
программа сосчитала, что такая цифра 4 и встречается 700 раз.

Вопросы
1. насколько разумно приведенное решение?
2. есть ли иное (любое) решение?

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
REM
REM  4 (700)
REM
 
DECLARE FUNCTION SS$ (n!)
DECLARE FUNCTION Col! (t AS STRING)
 
CLS
DIM SHARED s AS STRING
DIM t AS STRING
CLEAR , , 20000
 
FOR i = 1 TO 1000
   s = s + SS(i ^ 2)
NEXT
 
FOR n = 0 TO 9
   t = SS(n)
   m = Col(t)
   IF max < m THEN
      max = m
      nmax = n
   END IF
NEXT
 
PRINT "MAX ="; max
PRINT "N ="; nmax
END
 
FUNCTION Col (t AS STRING)
  
   DO WHILE INSTR(s, t)
      m = INSTR(s, t)
      MID$(s, m, 1) = "+"
      k = k + 1
   LOOP
 
   Col = k
END FUNCTION
 
FUNCTION SS$ (n)
   SS = LTRIM$(STR$(n))
END FUNCTION
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.10.2016, 18:52
Ответы с готовыми решениями:

Написать программу, которая выводит первую цифру в числе, последнюю цифру в числе, сумму всех цифр числа.
Помогите написать программу, которая выводит первую цифру в числе, последнюю цифру в числе, сумму всех цифр числа

Определить, какая цифра в заданном числе встречается чаще других
Дано натуральное число. Определить, какая цифра в этом числе встречается чаще других. Помогите плс с решением-))заранее спс

Определить, какая цифра встречается в заданном числе чаще: 0 или 9
Дано натуральное число. Определить, какая цифра встречается в нем чаще: 0 или 9.

9
Заблокирован
11.10.2016, 20:17
Цитата Сообщение от echs Посмотреть сообщение
насколько разумно приведенное решение?
С точки зрения эффективности хуже придумать сложно
1 - зачем вычислять строку, которую даже процитировать постеснялись?
Цитата Сообщение от echs Посмотреть сообщение
149162536496481100 ... 1000000
2 - зачем мучать строки для подсчета цифр?
3 - к-во цифр элементарно считается в массиве.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim d&(9), i&, n&, j&, max&, nmax&
For i = 1 To 1000
  n = i * i
  While n
    j = n Mod 10
    d(j) = d(j) + 1
    If d(j) > max Then
      max = d(j)
      nmax = j
    End If
    n = n \ 10
  Wend
Next[quote="echs;9634070"]PRINT "MAX ="; max
PRINT "N ="; nmax[/quote]
1
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
11.10.2016, 20:34  [ТС]
Shersh
я что-то не понял.
почему в цикле ищется максимум, когда это можно
вынести из цикла?
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
11.10.2016, 20:52
Лучший ответ Сообщение было отмечено echs как решение

Решение

Цитата Сообщение от echs Посмотреть сообщение
иное (любое) решение?
Вот моё решение

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
CLS
 
FOR i = 1 TO 1000
   s$ = s$ + LTRIM$(STR$(i * i))
NEXT
 
DIM num%(9)
 
FOR i = 1 TO LEN(s$)
  SELECT CASE VAL(MID$(s$, i, 1))
    CASE 0
      num%(0) = num%(0) + 1
    CASE 1
      num%(1) = num%(1) + 1
     CASE 2
       num%(2) = num%(2) + 1
        CASE 3
          num%(3) = num%(3) + 1
           CASE 4
             num%(4) = num%(4) + 1
              CASE 5
                num%(5) = num%(5) + 1
                 CASE 6
                   num%(6) = num%(6) + 1
                    CASE 7
                      num%(7) = num%(7) + 1
                       CASE 8
                         num%(8) = num%(8) + 1
                          CASE 9
                            num%(9) = num%(9) + 1
      END SELECT
NEXT
 
FOR i = 0 TO 9
  m = num%(i)
  IF max < m THEN
     max = m
     nmax = i
  END IF
  NEXT i
  
PRINT "MAX ="; max
PRINT "N ="; nmax
Мало чем отличается!

У Shersh гораздо эффективней решение. Я почему то подумал, что считать в строке это фишка такая
0
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
11.10.2016, 21:01  [ТС]
Pro_grammer
Спасибо! Оператор SELECT CASE так редко
применяется, что я почти забыл о его существовании.
СПАСИБО!
0
Заблокирован
11.10.2016, 22:00
Лучший ответ Сообщение было отмечено echs как решение

Решение

Даже если
Цитата Сообщение от Pro_grammer Посмотреть сообщение
считать в строке это фишка такая
то это
Цитата Сообщение от Pro_grammer Посмотреть сообщение
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
FOR i = 1 TO LEN(s$)
* SELECT CASE VAL(MID$(s$, i, 1))
* * CASE 0
* * * num%(0) = num%(0) + 1
* * CASE 1
* * * num%(1) = num%(1) + 1
* * *CASE 2
* * * *num%(2) = num%(2) + 1
* * * * CASE 3
* * * * * num%(3) = num%(3) + 1
* * * * * *CASE 4
* * * * * * *num%(4) = num%(4) + 1
* * * * * * * CASE 5
* * * * * * * * num%(5) = num%(5) + 1
* * * * * * * * *CASE 6
* * * * * * * * * *num%(6) = num%(6) + 1
* * * * * * * * * * CASE 7
* * * * * * * * * * * num%(7) = num%(7) + 1
* * * * * * * * * * * *CASE 8
* * * * * * * * * * * * *num%(8) = num%(8) + 1
* * * * * * * * * * * * * CASE 9
* * * * * * * * * * * * * * num%(9) = num%(9) + 1
* * * END SELECT
NEXT
чуть-чуть короче записать так
QBasic/QuickBASIC
1
2
3
FOR i = 1 TO LEN(s$)
  num%(VAL(MID$(s$, i, 1))) = num%(VAL(MID$(s$, i, 1))) + 1
NEXT
1
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
12.10.2016, 08:16
Лучший ответ Сообщение было отмечено echs как решение

Решение

мой вариант, аналог варианта Shersh, только определения максимума вынесено за основной цикл
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
DIM a(9) AS LONG, n AS LONG, m AS LONG, mx AS LONG, i AS LONG, k AS LONG
FOR i = 1 TO 1000
    n = i * i
    DO
        m = n MOD 10
        a(m) = a(m) + 1
        n = n \ 10
    LOOP WHILE n
NEXT i
mx = a(0)
FOR i = 1 TO 9
    IF a(i) > mx THEN mx = a(i): k = i
NEXT i
PRINT k
1
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
12.10.2016, 08:36  [ТС]
Ребята, спасибо!
Все-таки приятно посмотреть и сравнить код
Великих гуру в QBasic'e. Тут есть чему поучиться,
ну и себя немного показать...
0
Заблокирован
14.10.2016, 23:20
Цитата Сообщение от echs Посмотреть сообщение
сравнить код Великих гуру в QBasic'e
echs, про QBasic лично я забыл лет 20 назад.
И не понимаю твоего экстаза от общения с ним.
1
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
15.10.2016, 10:22  [ТС]
Shersh
Надеюсь вы знаете что такое хобби (увлечение).
Но вы точно не знаете, что такое Любовь. Любовь к
программе! Это что-то как в песне поется
"Я каждый жест, каждый взгляд твой в душе берегу"
А мне нравится Код моих голубоглазых программ!!!
...
может когда-нибудь вы меня поймете..., а может нет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.10.2016, 10:22
Помогаю со студенческими работами здесь

Использование условного оператора. Определить, какая цифра встречается в заданном числе чаще: 0 или 9
Дано натуральное число. Определить какая цифра встречается чаще: 0 или 9

Определить цифру которая встречается наибольшее кол-во раз в числе
дано натуральное число N. определить цифру которая встречается наибольшее кол-во раз в этом числею

Написать функцию, которая в заданном натуральном числе n заменяет младшую цифру на цифру 9
Задача: Написать на языке С функцию, которая в заданном натуральном числе n заменяет младшую цифру на цифру 9, если старшая цифра числа n...

Среди цифр введенных в строке вывести ту цифру которая встречается чаще других
Среди цифр введнных в строке вывести ту цифру которая встречается чаще других, если таких цифр несколько то вывести ту, которая ...

Определить, какая цифра в числе встречается чаще всего
Составьте программу, определяющую, какая цифра в числе встречается чаще всего. Если таких цифр несколько выводить их все.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru