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

Введение

Современный человек в повседневной жизни постоянно сталкивается с системами счисления. Посмотрев на часы, многие даже не задумываются, что имеют дело с шестидесятеричной системой счисления, с одной стороны, и двадцатичетырехричной – с другой. Задачапреобразования чисел в различные системы счисления актуальна и особенно важна в компьютерной или IT сфере, так как большинство данных представляется не в привычной нам десятичной, а в двоичной, шестнадцатеричной, и других системах счисления.

Целью данной работы является разработка консольной программы на языке C++ для преобразования и обработки чисел в k-ичной системе счисления (включая римскую систему счисления)с удобным интерфейсом и функциями. Числа также могут быть отрицательными. При разработке используется объектно-ориентированный подход программирования (подход к разработке программного обеспечения, основанный на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования).

Разработанная программа должна реализовать следующие функции:

- ввод и вывод чисел в k-ичной и римской системах счисления;

-преобразование чисел из k-ичной или римской системах счисления в десятичную и обратно;

- выполнение арифметических операций над числами в различных системах счисления,

-вывод на дисплей результатов вычисления арифметических выражений, содержащих числа в различных системах счисления.

1 Анализ задачи преобразования чисел в различные системы счисления и выполнения арифметических операций

Цель работы – разработать объектную программу на языке С++ (язык общего назначения и задуман для того, чтобы настоящие программисты получили удовольствие от самого процесса программирования [1]) для выполнения преобразований чисел в различные системы счисления и выполнения арифметических операций над ними.

Системы счисления

Система счислениясимволический метод записи чисел, представление чисел с помощью письменных знаков.

Система счисления:

  • даёт представления множества чисел (целых и/или вещественных);

  • даёт каждому числу уникальное представление;

  • отражает алгебраическую структуру чисел.

Системы счисления подразделяются на позиционные и непозиционные [3].

Позиционные системы счисления

Позиционная система счисления — система счисления, в которой значение каждого числового знака (цифры) в записи числа зависит от его позиции (разряда). Также у любой позиционной системы счисления есть свое основание. Например, про десятичное число 537 (основание 10) можно сказать, что цифра 7 находиться в позиции единиц, цифра 3 – в позиции десятков, а цифра 5 – в позиции сотен. Тогда 53710 = 7·100 + 3·101 + 5·102.

Это же самое число 537 в различных системах счисления может иметь различные эквивалентные представления. Например, 53710 = 13657 = 44911, т.е. 13657 = 5·70+6·71+3·72+1·73 и 44911 = 9·110+4·111+4·112.

Самыми распространенными системами счисления в мире компьютеров являются двоичная, восьмеричная, десятичная и шестнадцатеричная системы счисления [4].

Непозиционные системы счисления

В непозиционных системах счисления значение цифры в числе не зависит от ее положения. Примером непозиционной системы может служить римская система счисления[5].

Для правильной записи больших чисел римскими цифрами необходимо сначала записать число тысяч, затем сотен, затем десятков и, наконец, единиц [2].

Например, 53710 = DXXXVII(R)

Преобразование из k1-ичной системы счисления в k2-ичную систему счисления

Задача состоит в преобразовании числа A из k1-ичной системы счисления в число B в k2-ичной системе счисления:

Возможных вариантов преобразований возможно |k1|·|k2|=16·16=256.

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

При этом количество преобразований изменяется следующим образом: 16+16=32.

Рассматривая преобразование числа из произвольной системы счисления в десятичную систему счисления, можно использовать для всех позиционных систем счисления один способ преобразования, так же как и для римской системы счисления. Поэтому общее количество преобразований будет равно 2+2 = 4. Эти способы преобразования непосредственно должны быть реализованы в программе.

Преобразование из позиционной k-ичной системы счисления в десятичную систему счисления:

  1. Раскладываем число: каждую цифру умножим на основание системы счисления, возведенное в степень номера разряда, в котором эта цифра находится.

  2. Все полученные произведения сложить.

Преобразование из десятичной системы счисления в позиционную систему счисления:

  1. Последовательно делим десятичное число на основаниеk-ичной системы счисления, пока оно не станет равным нулю.

  2. Полученные при делении остатки являются разрядами нужного числа. Число в новой системе записывают, начиная с последнего остатка.

Преобразованиеиз римской системы счисления в десятичную систему счисления:

Каждая меньшая цифра записывается справа (увеличивает), а запись его слева уменьшает, на количество единиц, которое она обозначает.

Преобразование из десятичной системы счисления в римскую систему счисления.

Вычисление над числами в различных системах счисления.

Для выполнения арифметических операций с числами в различных системах счисления необходимо:

  1. Преобразовать числа из заданной системы счисления в десятичную систему счисления;

  2. Выполнить арифметические операции (+,–,*,/,%) над числами в десятичной системе счисления;

  3. Преобразовать полученное в результате вычислений число в заданную систему счисления.