- •Разработка программы преобразования чисел в различные системЫ счисления
- •Задание на курсовое проектирование
- •1 Исходные данные (функциональные требования) на проектирование
- •2 Структура проекта
- •3 Календарный график выполнения проекта
- •Оглавление Введение 4
- •1. Анализ задачи преобразования чисел в различные системы счисления и выполнения арифметических операций........................................................................5
- •2. Проектирование программы преобразования чисел..............................................10
- •Введение
- •1 Анализ задачи преобразования чисел в различные системы счисления и выполнения арифметических операций
- •2 Проектирование программы преобразования чисел
- •2.1 Разработка структуры программы
- •2.2 Разработка алгоритмов реализации основных функций
- •3. Реализация программы преобразования чисел
- •3.1. Программная реализация преобразования чисел
- •3.2. Тестирование
- •3.3. Руководство пользователя
- •Заключение
- •Список использованных источников
- •Приложение 1.
- •Приложение 2.
Введение
Современный человек в повседневной жизни постоянно сталкивается с системами счисления. Посмотрев на часы, многие даже не задумываются, что имеют дело с шестидесятеричной системой счисления, с одной стороны, и двадцатичетырехричной – с другой. Задачапреобразования чисел в различные системы счисления актуальна и особенно важна в компьютерной или 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-ичной системы счисления в десятичную систему счисления:
Раскладываем число: каждую цифру умножим на основание системы счисления, возведенное в степень номера разряда, в котором эта цифра находится.
Все полученные произведения сложить.
Преобразование из десятичной системы счисления в позиционную систему счисления:
Последовательно делим десятичное число на основаниеk-ичной системы счисления, пока оно не станет равным нулю.
Полученные при делении остатки являются разрядами нужного числа. Число в новой системе записывают, начиная с последнего остатка.
Преобразованиеиз римской системы счисления в десятичную систему счисления:
Каждая меньшая цифра записывается справа (увеличивает), а запись его слева уменьшает, на количество единиц, которое она обозначает.
Преобразование из десятичной системы счисления в римскую систему счисления.
Вычисление над числами в различных системах счисления.
Для выполнения арифметических операций с числами в различных системах счисления необходимо:
Преобразовать числа из заданной системы счисления в десятичную систему счисления;
Выполнить арифметические операции (+,–,*,/,%) над числами в десятичной системе счисления;
Преобразовать полученное в результате вычислений число в заданную систему счисления.
