Нахождение максимального числа после перестановки его цифр - QBasic
Формулировка задачи:
Условие
На вход программе подаётся последовательность символов,заканчивающаяся точкой.Требуется написать программу,которая определяет,есть ли в этой последовательности десятичные цифры,и выводит наибольшее число,которое можно составить из этих цифр.Если цифр нет программа выводит "нет",если есть выводит слово "да" и в следующей строчке искомое число.
вот то,что я написал:
дальше как найти максимальное число фантазия кончилась,помогите,если в моём начале что то не так скажите что,если напишите свой вариант,мой рассматривать не обязательно,и ещё появился вопрос:как застопорить программу при встрече точки,что бы дальше не считало.
Листинг программы
- INPUT a$
- l=LEN(a$)
- FOR i =1 TO l
- x$=MID$(a$,i,1)
- IF ASC(x$)>47 AND ASC(x$)<58 THEN b$=b$+x$
- NEXT i
- k=LEN(b$)
- FOR j=1 TO k
Решение задачи: «Нахождение максимального числа после перестановки его цифр»
textual
Листинг программы
- CLS
- DIM a(9) AS INTEGER
- DIM i AS INTEGER, j AS INTEGER, n AS INTEGER, m AS INTEGER
- INPUT s$
- FOR i = 1 TO LEN(s$)
- m = ASC(MID$(s$, i, 1))
- IF m >= 48 AND m <= 57 THEN
- n = n + 1
- a(m - 48) = a(m - 48) + 1
- END IF
- NEXT
- IF n = 0 THEN
- PRINT "NO"
- ELSE
- PRINT "YES"
- FOR i = 9 TO 0 STEP -1
- FOR j = 1 TO a(i)
- PRINT LTRIM$(STR$(i));
- NEXT j, i
- END IF
Объяснение кода листинга программы
- Очистка экрана - команда CLS очищает экран перед выводом результатов.
- Подготовка массива - в цикле FOR с помощью функции LEN(s$) переменной i присваиваются значения от 1 до длины строки s$.
- Извлечение цифры - функция ASC(MID$(s$, i, 1)) возвращает числовое значение ASCII для каждой цифры в строке s$.
- Проверка на число - если полученное значение больше или равно 48 и меньше 58 (это диапазон цифр от 0 до 9), то выполняется следующий шаг.
- Увеличение счетчика - переменная n увеличивается на 1.
- Обновление массива - значение переменной n добавляется к элементу массива a(m-48).
- Проверка на ноль - если переменная n равна нулю, то выводится сообщение
NO
. - Вывод сообщения и чисел - если переменная n не равна нулю, то выводится сообщение
YES
, а затем в цикле FOR, начиная с i=9 и до 0 по шагу -1, выводятся числа от 9 до 0 с помощью функции LTRIM$(STR$(i)) (это функция, которая возвращает строку, состоящую из указанного количества пробелов в начале).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д