Алгоритмы обработки символьной информации на языке Си


Рис. 1. Удалите фрагмент, переписав пары символов



бет4/6
Дата19.02.2023
өлшемі89,27 Kb.
#69188
1   2   3   4   5   6
Рис. 1. Удалите фрагмент, переписав пары символов.


II Классификация кодов и порядок исполнения
2.1 Правила проектирования и управления

Внешние и внутренние формы представления чисел


Есть еще одна точка соприкосновения текстовых и цифровых данных. Не все наблюдаемые нами цифровые данные - это то, с чем имеет дело компьютер. При вводе или вычитании целого или действительного числа мы имеем дело со строкой текста, содержащей символы, представляющие числа числа - внешний вид представления.
Внутренняя форма представления числа - это представление числа в виде целого числа или действительной переменной.
Внешняя форма представления числа - это представление числа в виде строки символов-чисел в данной системе счисления.
В частности, функции и объекты стандартных потоков ввода / вывода могут вводить и выводить целые числа, заданные в десятичной, восьмеричной и шестнадцатеричной системах счисления. В этом случае происходят изменения из-за перехода от внешней формы к внутренней и наоборот.

Рис 2. Внешние и внутренние формы цифрового представления

Помните, что о системе счисления следует упоминать только тогда, когда число рассматривается в виде последовательности чисел, т.е. во внешней форме представления числа. Внутренняя форма представления числа - двоичная и нас не интересует, потому что компьютер корректно работает с ней и без нашего участия.


Фактически, алгоритмы ввода / вывода для преобразования цифровых данных (точнее, преобразования данных из внешней формы во внутреннюю и наоборот) аналогичны алгоритмам преобразования чисел из свободной числовой системы в десятичное число (см. 1.3). В этом случае десятичная система действует как внутренняя («родная») форма представления.
Преобразуйте целое число из внешней формы во внутреннюю (введите целое число). Преобразования при вводе и выводе чисел начинаются с перехода от символа к числу к значению целочисленной переменной, соответствующей этому числу, и наоборот:
char c; int n;
n = c - «0»;
с = п + '0';
Ввод целого числа сопровождается его преобразованием из внешней формы - последовательности чисел во внутреннюю - целочисленную переменную, которая «объединяет» числа в одно значение с учетом их веса (это, среди прочего, зависит от встроенной системы счисления). При преобразовании используется тот факт, что при добавлении следующего числа к числу справа старое значение умножается на 10 и к нему добавляется значение нового числа, например:
Число: '123' 1234 '
Значение: 123 1234 = 123 * 10 + 4

Затем алгоритм может быть основан на цикле, который просматривает все числа слева направо, где значение числа на текущем шаге цикла получается путем умножения результата предыдущего цикла на 10 и добавления значения следующего числа:


n = n * 10 + c [i] - «0»;
// ------------------------------------------------- ------ 44-08.cpp
// - - - - - Введите десятичное целое число
int StringToInt (char c []) {
int n, i;
for (i = 0 ;! (c [i]> = '0' && c [i] <= '9'); i ++)
if (c [i] == '\ 0') return 0; // Ищем первое число
for (n = 0; c [i]> = '0' && c [i] <= '9'; i ++) // агрегирование
n = n * 10 + C [i] - «0»; // "число после числа"
return n; }}




Достарыңызбен бөлісу:
1   2   3   4   5   6




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет