Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
11 / 11 / 24
Регистрация: 12.12.2017
Сообщений: 131
Записей в блоге: 2

Состоят ли два числа из одних и тех же цифр

11.01.2018, 09:08. Показов 2044. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано два числа A и B
Определить, состоят ли они из одних и тех же цифр?
Иными словами, можно ли одно из чисел путём перестановки
цифр превратить в другое число (и наоборот естественно)?
...
Тут алгоритмов решения этой задачи множество...
1. Вероятно можно использовать массивы и потом их сравнить
2. Наверное можно задать числа как строки и отсортировать.
3. ТС предложил своё, как ему кажется, более рациональное решение.
Вопрос
1. А можно ли в данной задаче использовать рекурсию?
2. Как использовать такие свойства этих чисел, например
Сумма цифр обоих чисел должна быть равна. Или это ничего
не даёт?
3. Наверняка есть особые алгоритмы, для какого то особого класса
чисел? Например двоичных чисел?
4. Ребята, пишите. ТС интересуют ЛЮБЫЕ алгоритмы. Чем больше,
тем лучше. Возможно у вас могут быть свои оригинальные решения,
или замечания, или что-то, что вы знаете только одни...
(пусть узнают и другие)

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
DECLARE FUNCTION f! (x&, y&)
CLS
 
DIM a AS LONG
DIM b AS LONG
DIM c AS LONG
CONST p = " "
 
a = 123400789
b = 830792401
 
IF f(a, b) THEN PRINT "YES" ELSE PRINT "NO"
END
 
FUNCTION f (x AS LONG, y AS LONG)
   DIM x1 AS STRING
   DIM y1 AS STRING
   DIM s1 AS STRING
 
   IF LEN(x1) = LEN(y1) THEN
      x1 = LTRIM$(STR$(x))
      y1 = LTRIM$(STR$(y))
 
      FOR i = 1 TO LEN(x1)
         s1 = MID$(x1, i, 1)
         k = INSTR(y1, s1)
 
         IF k THEN
            MID$(y1, k, 1) = p
         ELSE
            EXIT FUNCTION
         END IF
      NEXT
      f = -1
   ELSE
      EXIT FUNCTION
   END IF
END FUNCTION
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.01.2018, 09:08
Ответы с готовыми решениями:

Определить, состоят ли два числа из одних и тех же цифр
Будем называть два числа дружными, если они состоят из одних и тех же цифр. Например, числа 1132 и 32321 являются дружными, а 12 и 123 –...

Определить, состоят ли два числа из одних и тех же цифр
Помогите пожалуйста с решением. В теории вроде понимаю как это сделать.Разделить каждое число на цифры и загнать цифры в массив, затем...

Даны два пятизначных числа. Определить, состоят ли они из одних и тех же цифр
Здравствуйте, недавно начал изучать Java, столкнулся с такой задачей, прошу помощи в написании такой программы. Видел много подобных на...

7
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
11.01.2018, 11:28
Лучший ответ Сообщение было отмечено Ли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
DECLARE FUNCTION cmpnum(BYVAL a AS LONG, BYVAL b AS LONG) AS LONG
DECLARE FUNCTION cmpnum2(BYVAL a AS LONG, BYVAL b AS LONG) AS LONG
DIM a AS LONG, b AS LONG
 
a = 123456789
b = 987654321
IF cmpnum(a, b) THEN PRINT "Yes" ELSE PRINT "No"
IF cmpnum2(a, b) THEN PRINT "Yes" ELSE PRINT "No"
'Sleep 5000
 
FUNCTION cmpnum(BYVAL a AS LONG, BYVAL b AS LONG) AS LONG 
    DIM s AS DOUBLE
    WHILE a
        s = s + 11 ^ (a MOD 10)
        a = a \ 10
    WEND
    WHILE b
        s = s - 11 ^ (b MOD 10)
        b = b \ 10
    WEND
    cmpnum = s = 0
END FUNCTION
 
FUNCTION cmpnum2(BYVAL a AS LONG, BYVAL b AS LONG) AS LONG
    DIM i AS LONG, arr(9) AS LONG
    WHILE a
        i = a MOD 10
        arr(i) = arr(i) + 1
        a = a \ 10
    WEND
    WHILE b
        i = b MOD 10
        arr(i) = arr(i) - 1
        b = b \ 10
    WEND
    FOR i = 0 TO 9
        IF arr(i) THEN EXIT FUNCTION
    NEXT i
    cmpnum2 = -1
END FUNCTION
2
Заблокирован
11.01.2018, 11:29
Лучший ответ Сообщение было отмечено Ли2 как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub main()
MsgBox S(12345) = S(54321)
End Sub
 
Function S(L As Long) As String
S = String$(10, "0")
While L
  Mid$(S, L Mod 10 + 1, 1) = Mid$(S, L Mod 10 + 1, 1) + 1
  L = L \ 10
Wend
End Function
1
11 / 11 / 24
Регистрация: 12.12.2017
Сообщений: 131
Записей в блоге: 2
11.01.2018, 12:21  [ТС]
m-ch и Остап Бонд
Ребята спасибо!!! Я вам очень благодарен. Это так интересно,
посмотреть как решается данная задача другими! Взгляд со
стороны - он дорогого стоит!!
Спасибо!
0
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
17.01.2018, 19:38
m-ch, это не QBasic, а Quick, в QB Ваша программа не идёт. То же самое и с программой Остап Бонд, она, походу, вообще из VB
Осмелюсь предложить свой вариант. Он покороче будет, чем у всех...

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DIM a(10), b(10)
INPUT c1
INPUT c2
f = 0
DO WHILE c1 > 0
a(c1 MOD 10) = a(c1 MOD 10) + 1
b(c2 MOD 10) = b(c2 MOD 10) + 1
c1 = c1 \ 10
c2 = c2 \ 10
n = n + 1
LOOP
IF c2 <> 0 THEN f = 1
FOR i = 1 TO n
IF a(i) <> b(i) THEN f = 1
NEXT
IF f = 0 THEN PRINT "yes" ELSE PRINT "no"
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
17.01.2018, 20:50
Цитата Сообщение от кот Бегемот Посмотреть сообщение
m-ch, это не QBasic, а Quick, в QB Ваша программа не идёт.
Думаю, что с объявлением функций, как того требует QBasic, ТС сможет справится

Цитата Сообщение от кот Бегемот Посмотреть сообщение
Осмелюсь предложить свой вариант. Он покороче будет, чем у всех...
Короче, не значит лучше (к тому же и не правильно):
1. По 2 раза считаете c1 MOD 10 и c2 MOD 10, иногда оптимальнее по времени данные расчеты делать один раз и хранить в переменной (для данной задачи не сильно влияет)
2. если с2 значительно меньше с1 (по количеству знаков), зачем ее каждый раз делить на 10?
3. зачем то ввели переменную n, так получается, что 98=76, проверять нужно не от 1 до n, а по всем цифрам (от 0 до 9), проверки нуля в Вашем коде нет, поэтому 1000 = 1
4. Не принципиально, но теряются значения c1 и c2 после выполнения программы, в задании не требовалось, но иногда нужно еще вывести что то типа c1=c2

Добавлено через 11 минут
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DIM a(9) AS LONG, c1 AS LONG, c2 AS LONG, n AS LONG, m AS LONG, i AS LONG
INPUT c1
INPUT c2
n = c1
WHILE n
    m = n MOD 10
    a(m) = a(m) + 1
    n = n \ 10
WEND
n = c2
WHILE n
    m = n MOD 10
    a(m) = a(m) - 1
    n = n \ 10
WEND
FOR i = 0 TO 9
    IF a(i) THEN EXIT FOR
NEXT i
IF i = 10 THEN PRINT "Yes" ELSE PRINT "No"
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
18.01.2018, 21:03
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
DIM s AS DOUBLE, c1 AS LONG,c2 AS LONG
INPUT c1
INPUT c2
WHILE c1 * c2
    s = s + 11 ^ (c1 MOD 10) - 11 ^(c2 MOD 10)
    c1 = c1 \ 10
    c2 = c2 \ 10
WEND
IF c1 = 0 AND c2 = 0 AND s = 0 THEN PRINT "Yes" ELSE PRINT "No"
0
 Аватар для Вадим Тукаев
310 / 291 / 116
Регистрация: 23.01.2018
Сообщений: 933
24.01.2018, 07:19
Вот мой вариант, правда на PureBasic. Надеюсь, смысл кода будет понятен. Могу установить QBasic и переписать...

PureBasic
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
EnableExplicit
 
OpenConsole()
 
Dim digits(9)
 
Define a = Val(Input())
Define b = Val(Input())
 
While a > 0
  digits(a % 10) + 1
  a / 10
Wend
 
Define result = #True
 
While result And b > 0
  Define d = b % 10
  If digits(d) = 0 : result = #False : EndIf
  digits(d) - 1
  b / 10
Wend
 
Define i = 0
 
While result And i < 10
  If digits(i) <> 0 : result = #False : EndIf
  i + 1
Wend
 
If result : PrintN("Yes") : Else : PrintN("No") : EndIf
 
Input()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.01.2018, 07:19
Помогаю со студенческими работами здесь

Состоят ли два списка из одних и тех же элементов
Пожалуйста, помогите решить задачу!!! Заранее спасибо!!! Состоят ли два списка из одних и тех же элементов? Например, два списка и ...

Проверить, состоят ли два списка из одних и тех же атомов
Здравствуйте, задача на общую рекурсию .Преподавателю не нравится мое решение , путем обхода одного из списков и удаления из него элементов...

Определить состоят ли два заданных линейных массива из одних и тех же элементов
Даны дыа линейных массива. Состоят ли они из одних и тех же элементов?

напишите программу, которая определяет, состоят ли два заданных текста из одних и тех же слов
Ребят еще такая задачка, напишите программу, которая определяет, состоят ли два заданных текста из одних и тех же слов. Помогите кто может...

Состоят ли строки из одних и тех же символов
Здравствуйте! Вопрос в заголовке, только уточню, что количество повторов одной буквы одинаковое &quot;abdfab&quot; == &quot;bafadb&quot;...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru