Преобразовать числовую строку по правилу - QBasic
Формулировка задачи:
Дано число в виде строки S. Требуется каждый элемент
этой строки заменить на
1. Если элемент четная цифра, то заменить на большую
рядом стоящую цифру
2. Если элемент нечетная цифра, то заменить на меньшую
рядом стоящую цифру.
примечание
Дано число 12345. Числа 1 и 5 считаются рядом стоящими.
Данная программа решила задачу, создав новую строку...
Как сделать замену?
Есть мысль ввести пару переменных? Как?
Решение задачи: «Преобразовать числовую строку по правилу»
textual
Листинг программы
DECLARE FUNCTION max! (a!, b!) DECLARE FUNCTION min! (a!, b!) DECLARE FUNCTION M$ (n!) DECLARE FUNCTION STO$ (u!) DECLARE SUB STRO (i!) CLS DIM SHARED s AS STRING s = "4915440847" PRINT s PRINT CALL STRO(1) PRINT s END FUNCTION M$ (n) M = MID$(s, n, 1) END FUNCTION FUNCTION max (a, b) IF a > b THEN max = a ELSE max = b END FUNCTION FUNCTION min (a, b) IF a < b THEN min = a ELSE min = b END FUNCTION FUNCTION STO$ (u) STO = LTRIM$(STR$(u)) END FUNCTION SUB STRO (i) IF i > LEN(s) THEN EXIT SUB SELECT CASE i CASE 1 j = LEN(s) : k = 2 CASE LEN(s) j = i - 1 : k = 1 CASE ELSE j = i - 1 : k = i + 1 END SELECT n1 = VAL(M(j)) ni = VAL(M(i)) n2 = VAL(M(k)) CALL STRO(i + 1) IF ni MOD 2 THEN MID$(s, i, 1) = STO(min(n1, n2)) ELSE MID$(s, i, 1) = STO(max(n1, n2)) END IF END SUB
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д