Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение1.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
58.54 Кб
Скачать

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 частей.

  1. Вычисление позиций запятых в обоих числах.

  2. Строка ориентира.

  3. Динамическая строка разрядов для числа A или для числа B.

  4. Число A или число B, разделенное по разрядам.

  5. Перевод Число 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)

Под «<число» понимается символ, разделенного по разрядам, числа.

Под «#алфавит» понимается алфавит, введенный пользователем.