- •Введение
- •1. Описание составляющих частей программы
- •1.1 Лицевая часть
- •1.2 Динамическое выравнивание чисел по позиции запятой
- •1.3 Сложение и Вычитание
- •2 Описание работы состовляющих частей программы
- •2.1 Лицевая часть
- •2.2 Динамическое выравнивание чисел по позиции запятой
- •2.3 Сложение
- •Сложение.
- •2.2.1 Сложение.
- •2.4 Вычитание
- •Вычитание
- •2.2.1 Вычитание
1.3 Сложение и Вычитание
Сложение. В этой части программы число A и число B складывается в столбик. Благодаря этой части программы конечный ответ в результате сложения числа A и числа B в той системе счисления, которая была введена пользователем.
Вычитание. В этой части программы из числа A вычитается число B в столбик. В этой части программы ответ мы тоже получим в системе счисления, вводимой пользователем.
2 Описание работы состовляющих частей программы
2.1 Лицевая часть
В лицевой части формул практически не используется т. к. 4 ячейки из 5 заполняются пользователем. Лишь одна ячейка заполняется автоматически – это «Ответ».
В ответе идет проверка: т. к. вычитание и сложение используется одновременно, а ответ должен записываться с учетом действием используемым пользователем осуществляется проверка, что если ячейке «Действие» записывается «+», то пишется «0», а если «-», то пишется «1».
=ЕСЛИ(#знак="+";0;ЕСЛИ(#знак ="-";1)) (1)
Под #знак понимается ячейка с выбором действия.
В дальнейшем в ячейке «Ответ» идет проверка, что если в ячейке A11 записан «0» то ответ записывается с части программы, которая складывает число A и число B, а если «1», ответ записывается с той части программы, которая вычитает из числа A число B.
=ЕСЛИ(*число=0;*ответA;ЕСЛИ(*число=1;*ответB;"")) (2)
Под *число понимается число, полученное в предыдущем действии
Под *ответA понимается ответ, получаемый в результате сложения чисел
Под *ответB понимается ответ, получаемый в результате вычитании чисел
2.2 Динамическое выравнивание чисел по позиции запятой
Часть программы, которая называется «Динамическое выравнивание чисел по позиции запятой» состоит из 5 частей.
Вычисление позиций запятых в обоих числах.
Строка ориентира.
Динамическая строка разрядов для числа A или для числа B.
Число A или число B, разделенное по разрядам.
Перевод Число A или число B.
2.2.1 Вычисление позиций запятых в обоих числах
Рисунок 1.Описание части программы
Эта часть программы состоит из нескольких ячеек, которые зависят друг от друга (смотри рис.1).
Сначала находится позиция запятой в числе A, а потом в числе B.
=ЕСЛИОШИБКА(НАЙТИ(",";*позиция);"") (3)
Под *позиция понимается позиция запятой в одном из чисел.
После того, как вычислялась позиция запятой в обоих числах, путем сравнения определяется, в каком числе запятая находится дальше от первого символа и когда это определилось, из большего вычисляется меньшее и число.
=ЕСЛИ(*позицияA>*позицияB;*позицияA-*позицияB;ЕСЛИ(*позицияB >*позицияA; *позицияB -*позицияA;ЕСЛИ(*позицияA =*позицияB;""))) (4)
Под *позицияA понимается позиция запятой в числе A
Под *позицияB понимается позиция запятой в числе B
В дальнейшем к полученному ответу прибавляется единица и записывается буква A или B в зависимости от того, какое число нужно передвинуть по разрядам, чтобы выровнять позиции запятой.
=ЕСЛИ(№буква="A";*число+@ответ;ЕСЛИ(№буква="B";*число +@ответ;ЕСЛИ(@ответ ="";""))) (5)
Под №буква понимается буква, записанная в предыдущем действии.
Под @ответ понимается ответ, получаемый в результате вычитания одной позиции запятой из другой.
Таким образом, узнается, напротив какого разряда будет записываться первый символ числа, которое нужно передвинуть. А число, у которого количество символов в целой части числа больше, будет записываться с первого разряда.
=ЕСЛИ(*позицияA=*позицияB;"AB";ЕСЛИ(*позицияA>*позицияB;"B";ЕСЛИ(*позицияB >*позицияA;"A";""))) (6)
2.2.2 «Строка ориентира»
«Строка ориентира» состоит из чисел, записанных по порядку по принципу: одно число одна ячейка. Эта часть программы так названа, потому что на нее ссылается всё дальнейшее динамическое распределение разрядов.
2.2.3 Динамическая строка разрядов для числа A или для числа B
Эта строка является порядком разрядов для числа, в котором количество разрядов для числа в целой части числа меньше. Благодаря первому действию (смотри пункт 2.2.1) определяется, под каким знаком строки ориентира будет записан первый разряд целой части.
=ЕСЛИ(№буква="AB";/ячейка+1;ЕСЛИ(№буква="A";ЕСЛИ(/ячейка>=1; /ячейка+1;ЕСЛИ(^разряд=$ответ;1;0));ЕСЛИ(№буква="B";/ячейка+1;0))) (7)
Под «/ячейка» понимается ячейка, которая стоит перед формулой.
Под «^разряд» понимается разряд в «строке ориентира».
Для первой ячейки формула состоит иначе т. к. перед ней нет никаких символов.
=ЕСЛИ(№буква="AB";1;ЕСЛИ(№буква="A";ЕСЛИ(*число =$ответ;1;0);ЕСЛИ(№буква ="B";1;0))) (8)
Под $ответ понимается, под каким разрядом будет писать первый разряд.
2.2.4 Разделение по разрядам Числа A или числа B
В этой части разделяется число A или число B по разрядам для того, чтобы в дальнейшем их можно было перевести в десятичную систему, складывать или вычитать. Осуществляется этот процесс с помощью не сложной формулы:
ЕСЛИ(*разряд=0;"";ПСТР(“Число;*разряд;1)) (9)
Под «“Число» понимается число, записанное пользователем.
Под «*разряд» понимается разряд, который мы получаем в предыдущем действии(смотри пункт 2.2.3).
2.2.5 Перевод Число A или число B
Эта часть программы является, по сути завершающей частью динамической системы счисления и началом для вычитания и сложения. В ней число A или число B, разделенное по разрядам, переводится в десятичную систему счисления с помощью алфавита, введенным пользователем.
=ЕСЛИ(<число="";"";ЕСЛИ(<число =",";",";НАЙТИ(<число;#алфавит)
-1)) (10)
Под «<число» понимается символ, разделенного по разрядам, числа.
Под «#алфавит» понимается алфавит, введенный пользователем.
