Сумма двух 100-значных чисел - QBasic
Формулировка задачи:
Листинг программы
- REM Программа суммирует два числа длиной до 100 знаков
- REM Иначе говоря A()+B()=C()
- REM Порядок чисел хранится в A(0), B(0), C(0)
- REM стандартный вид числа 1234.567 таков 1.234567 (порядок=3)
- DEFINT A-C, E, I
- DIM a(100)
- DIM b(100)
- DIM c(100)
- CLS
- ERASE c ' инициализация массива c()
- e=a(0)-b(0)
- IF e=0 THEN
- c(0)=a(0)
- GOTO 11
- END IF
- REM числа перед сложением выравниваются
- REM меньшее число смещается вправо
- IF e>0 THEN
- c(0)=a(0)
- FOR i=100-e TO 1 STEP -1
- b(i+e)=b(i)
- NEXT i
- FOR i=1 TO e
- b(i)=0
- NEXT i
- ELSE
- e=-e
- c(0)=b(0)
- FOR i=100-e TO 1 STEP -1
- a(i+e)=a(i)
- NEXT i
- FOR i=1 TO e
- a(i)=0
- NEXT i
- END IF
- 11: ' поразрядное сложение
- FOR i=1 TO 100
- c(i)=a(i)+b(i)
- NEXT i
- REM приведение результата к стандартному виду
- FOR i=100 TO 2 STEP -1
- IF c(i)>9 THEN
- c(i)=c(i)-10
- c(i-1)=c(i-1)+1
- END IF
- NEXT i
- IF c(1)>9 THEN
- c(0)=c(0)+1
- FOR i=100 TO 3 STEP -1
- c(i)=c(i-1)
- NEXT i
- c(2)=c(1)-10
- c(1)=1
- END IF
- STOP
- END
Решение задачи: «Сумма двух 100-значных чисел»
textual
Листинг программы
- '
- #Lang "FB" ' режим FreeBASIC-совместимости
- '
- Dim As String s1, s2, S
- Dim As Integer i, sum, p
- ' заданные значения операндов
- s1 = "1234567890"
- s2 = "999997777744443333222"
- '
- Do Until Len(s1) = Len(s2) ' выполнять до выравнивание
- If Len(s1) > Len(s2) Then
- s2 = "0" + s2 ' добавить ведущий нуль
- Else
- s1 = "0" + s1 ' добавить ведущий нуль
- End If
- Loop
- Print s1
- Print s2
- '
- p = 0 ' поразрядное сложение (перенос отсутствует)
- For i = Len(s1) To 1 Step -1
- sum = Val(Mid(s1, i, 1)) + Val(Mid(s2, i, 1)) + p
- If sum > 9 Then
- sum = sum - 10
- S = LTrim(Str(sum)) + S
- p = 1 ' перенос есть
- Else
- S = LTrim(Str(sum)) + S
- p = 0 ' переноса нет
- End If
- Next i
- '
- Print S
- Sleep
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д