Замена цифр в числе - QBasic
Формулировка задачи:
Задача
Дано десятизначное число (вообще говоря произвольное)
в виде стоковой переменной. Требуется заменить в этом
числе две цифры. Одну цифру на знак плюс (+), а другую
цифру на знак минус (-). Эти знаки разобьют данное число
на три числа соединенные двумя арифметическими операциями.
Если произвести эти операции, то получится некоторое число.
Так вот.
Задача состоит в том, чтобы так разместить эти две операции, чтобы
в результате их выполнения получилось минимальное положительное
число.
На экран надо вынести
1. Начальное число
2. Строку из чисел и операций
3. Результат этих операций (min)
(Программа проверена)
Удачи Вам!
Решение задачи: «Замена цифр в числе»
textual
Листинг программы
Sub main() S$ = "8371219727" For i% = 2 To 9 For j% = 2 To 9 If Abs(i% - j%) > 1 Then Z$ = S$ Mid$(Z$, i%, 1) = "+" Mid$(Z$, j%, 1) = "-" Debug.Print Z$; "="; Calc(Z$) End If Next j% Next i% End Sub Function Calc(Stri As String) As Double Dim r(1 To 3) As Double Z# = 1 k% = 1 For i% = 1 To Len(Stri) S$ = Mid(Stri, i%, 1) Select Case S$ Case "+" Z# = 1 k% = k% + 1 Case "-" Z# = -1 k% = k% + 1 Case Else r(k%) = r(k%) * 10 + Z# * Val(S$) End Select Next i% Calc = r(1) + r(2) + r(3) End Function
Объяснение кода листинга программы
- Задача программы - замена цифр в числе 8371219727 на плюс и минус в соответствующих позициях.
- Код начинается с двух вложенных циклов от 2 до 9, которые выполняются поочередно.
- Внутри циклов проверяется абсолютное значение разности текущих позиций циклов, если оно больше 1, то выполняется замена символа на соответствующую позицию в строке S$.
- Значение переменной Z$ используется для временного хранения исходной строки S$.
- Значение переменной M$ используется для хранения результата вычисления функции Calc.
- Функция Calc вычисляет сумму цифр в строке Stri, используя вложенный цикл для прохода по каждому символу строки.
- В зависимости от текущего символа S$ выбирается соответствующее действие для переменной Z# и переменной k%.
- Если S$ равно
+
, то Z# становится равным 1 и k% увеличивается на 1. - Если S$ равно
-
, то Z# становится равным -1 и k% увеличивается на 1. - Если S$ не равно
+
,-
или цифре, то значение переменной r(k%) становится равным сумме умножения r(k%) на 10 и Z# на значение S$. - Функция Calc возвращает сумму цифр в строке Stri.
- Значение переменной M$ становится равным результату функции Calc.
- Значение переменной M$ выводится в консоль с помощью функции Debug.Print.
- Значение переменной M$ вычисляется как равенство исходной строки S$.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д