Ввод/вывод числовых данных
Для ввода числовых данных необходимо:
1. Ввести соответствующую строку.
2. Преобразовать ее в числовой вид.
Для вывода необходимо выполнить действия в обратном порядке.
Преобразование строки в число.
Пусть задана строка вида:
[<Пробелы>] [<>][<Пробелы>] Цифра [Цифра Цифра...]
Преобразовать ее в соответствующее ей число.
Для преобразования последовательности цифр в число можно использовать схему Горнера. Например, пусть необходимо строку символов «375»
преобразовать в число. Представим число в виде:
(3 * 10 + 7) * 10 + 5. Здесь 3, 7, 5 -цифры числа, а 10
- основание системы счисления для исходного числа. Таким образом, алгоритм преобразования:
r=0;
for (i=n-1; i>=0; i--)
r = r*10 +d[i];
Так как в общем виде числа могут быть пробелы, которые надо игнорировать, напишем макрос для игнорирования этих символов. На вход макроса подается адрес символа строки, на выходе получаем адрес ненулевого символа
macro skip address
local l1, l2
ifidn <di>, <address>
reg equ esi
else
reg equ edi
endif
push reg
mov reg, address
l2:
cmp [byte ptr reg], ‘ ’
jne l1
inc reg
jmp l2
l1:
mov address, reg
pop reg
endm
Данный макрос подключим к файлу win.inc
Функции для преобразования строки в число и обратного преобразования представлены ниже.
Преобразование чисел при выводе
До вывода числа оно должно быть преобразовано из внутреннего представления в строковое. Для преобразования можно использовать следующие способы.
1. Число делится на 10 и остаток от деления рассматривается как очередная цифра. Деление продолжается до тех пор, пока не получим нулевое значение. Недостаток способа: цифры числа получаем, начиная с младших, перед выводом необходимо инвертирование строки или формирование строки заданной длины.
2. Число делится на 10000, 1000,... и получаем цифры числа, начиная со старших цифр. Недостаток. Требуется хранение массива или его программное формирование.
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий