
Московский государственный открытый университет
Курсовая работа по информатике.
Тема: Сложение чисел в восмеричной
системе счисления.
Выполнил : студент 2-го курса
факультета информатики и
радиоэлектроники
Проверил:
Москва 2005 – 2006 гг. Содержание.
Задание.........................................................................................................................3
Выбор языка программипрования и средств разработки.......................................3
Описание алгоритма..................................................................................................3
Схема алгоритма............................................................................................7,8
Описание работы контрольных примеров................................................................5
Листнинг программы..................................................................................................9
Задание.
Исходными данными являются два числа, вводимые пользователем в десятичной системе счисления. После ввода они переводятся в восмеричную систему счисления,
результат перевода выводится на экран, затем осуществляется операция сложения в
восмеричной системе счисления. Окончательный результат выводится в восмеричной
и десятичной системах счисления. Длина разрядной сетки целой части – 16, точность - 8 знаков после запятой.
Выбор языка программипрования и средств разработки.
В качестве языка программирования был выбран С++, в качестве среды разработки – Visual Studio 2002.
Описание алгоритма.
Ниже описаны основные этапы выполнения программы и алгоритмы работы:
Вводятся два десятичных числа.
Целые части введенных чисел поочередно переводятся в целые восмеричные.
Для получения целых частей введенных чисел используется код:
‘static_cast<__int64>(a)’, где a – переменная типа double
Дробые части введенных чисел поочередно переводятся в дробные восмеричные.
Для получения дробных частей введенных чисел используется код:
‘a – static_cast<__int64>(a)’, где a – переменная типа double.
На консоль выводятся два полученных числа.
Вычисляется сумма дробных частей полученных 8 - ых чисел.
Вычисляется сумма целых частей полученных 8 - ых чисел с учетом того, что в результате операции (5.) могло получится число >=1.
Полученное восмеричное число (а оно состоит из отдельно сложенных целой и дробной частей) переводится в десятичное и выводится на экран.
Два введенных числа непосредственно складываются( без каких либо преобразований) и выводятся на консоль.
Для перевода чисел из десятичной системы в восмеричную:
Для целой части использовалость правило деления
(функция i10_to_i8).
Для дробной части использовалость правило умножения
(функция i10_to_i8_fraction).
Для перевода чисел из восмеричной в десятичную систему счисления использовалость правило замещения (функция i8_to_i10_and_print).
Алгоритм сложения в восмеричной системе счисления(функция CalcSum):
Два (A,B) восмеричных числа (они находятся в виде массива(deque<char>) цифр ) поразрядно складываются, результат записывается в отдельный массив(C).
Напр. A=0463,B=0571, тогда С={011,015,04}
Поочередно берется каждый элемент(i) полученного массива.
Добавляем к выбранному элементу единицу «в уме»(carry_flag), если она установлена.
Если выбранный элемент >= 010, младший разряд записывается на место выбранного элемента(С[i]) и устанавливаем флаг(единицу) «в уме»(carry_flag=1), иначе флаг «в уме» сбрасывается(carry_flag=0).
Напр. C[i]==017, тогда C[i] = 07, caryr_flag = 1;
C[i]==05, тогда С[i] = 05, carry_flag = 0;
Если перебрали не все элементы массива переходим к шагу 2.
Если флаг «в уме» установлен, добавляем к полученному массиву(С) разряд слева и устанавливаем его значение в единицу.Таким образом, полученный массив представляет собой сумму двух восмеричных чисел.
P.S Данный шаг реализован в функции main (с целью небольшого упрощения алгоритма). При вычислении суммы дробных частей введенных чисел шаг 6. не выполняется.Единица «в уме»,в этом случае прибавляется к сумме целых частей восмеричных чисел.
Ограничения:
Для компиляции данной программы необходим компилятор, поддерживаищий «Microsoft C/C++ features».
Для компиляции данной программы под Linux необходим интеловский компилятор (находится на диске), поскольку стандартный GCC не понимает типа ‘__int64’, замены которому у GCC я не нашел.
Вводимые числа должны быть неотрицательными. Причины:
Если оба числа отрицательные – для обработки данной ситуации необходимо было-бы добавить довольно много условий, что сказалось бы на читабельности кода. К тому же основной задачей было «сложение в восмеричной системе счисления».
Если одно из чисел отрицательно – в данном случае необходимо было бы написать алгоритм вычитания в восмеричной системе счисления, что в мою задачу не входило.