Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Курсовая работа - Сложение чисел в восмеричной системе счисления.doc
Скачиваний:
38
Добавлен:
02.05.2014
Размер:
149.5 Кб
Скачать

Московский государственный открытый университет

Курсовая работа по информатике.

Тема: Сложение чисел в восмеричной

системе счисления.

Выполнил : студент 2-го курса

факультета информатики и

радиоэлектроники

Проверил:

Москва 2005 – 2006 гг. Содержание.

  1. Задание.........................................................................................................................3

  2. Выбор языка программипрования и средств разработки.......................................3

  3. Описание алгоритма..................................................................................................3

    1. Схема алгоритма............................................................................................7,8

  4. Описание работы контрольных примеров................................................................5

  5. Листнинг программы..................................................................................................9

Задание.

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

результат перевода выводится на экран, затем осуществляется операция сложения в

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

и десятичной системах счисления. Длина разрядной сетки целой части – 16, точность - 8 знаков после запятой.

Выбор языка программипрования и средств разработки.

В качестве языка программирования был выбран С++, в качестве среды разработки – Visual Studio 2002.

Описание алгоритма.

Ниже описаны основные этапы выполнения программы и алгоритмы работы:

  1. Вводятся два десятичных числа.

  2. Целые части введенных чисел поочередно переводятся в целые восмеричные.

Для получения целых частей введенных чисел используется код:

static_cast<__int64>(a)’, где a – переменная типа double

  1. Дробые части введенных чисел поочередно переводятся в дробные восмеричные.

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

a – static_cast<__int64>(a)’, где a – переменная типа double.

  1. На консоль выводятся два полученных числа.

  2. Вычисляется сумма дробных частей полученных 8 - ых чисел.

  3. Вычисляется сумма целых частей полученных 8 - ых чисел с учетом того, что в результате операции (5.) могло получится число >=1.

  4. Полученное восмеричное число (а оно состоит из отдельно сложенных целой и дробной частей) переводится в десятичное и выводится на экран.

  5. Два введенных числа непосредственно складываются( без каких либо преобразований) и выводятся на консоль.

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

  1. Для целой части использовалость правило деления

(функция i10_to_i8).

  1. Для дробной части использовалость правило умножения

(функция i10_to_i8_fraction).

Для перевода чисел из восмеричной в десятичную систему счисления использовалость правило замещения (функция i8_to_i10_and_print).

Алгоритм сложения в восмеричной системе счисления(функция CalcSum):

  1. Два (A,B) восмеричных числа (они находятся в виде массива(deque<char>) цифр ) поразрядно складываются, результат записывается в отдельный массив(C).

Напр. A=0463,B=0571, тогда С={011,015,04}

  1. Поочередно берется каждый элемент(i) полученного массива.

  2. Добавляем к выбранному элементу единицу «в уме»(carry_flag), если она установлена.

  3. Если выбранный элемент >= 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;

  1. Если перебрали не все элементы массива переходим к шагу 2.

  2. Если флаг «в уме» установлен, добавляем к полученному массиву(С) разряд слева и устанавливаем его значение в единицу.Таким образом, полученный массив представляет собой сумму двух восмеричных чисел.

P.S Данный шаг реализован в функции main (с целью небольшого упрощения алгоритма). При вычислении суммы дробных частей введенных чисел шаг 6. не выполняется.Единица «в уме»,в этом случае прибавляется к сумме целых частей восмеричных чисел.

Ограничения:

  1. Для компиляции данной программы необходим компилятор, поддерживаищий «Microsoft C/C++ features».

  2. Для компиляции данной программы под Linux необходим интеловский компилятор (находится на диске), поскольку стандартный GCC не понимает типа ‘__int64’, замены которому у GCC я не нашел.

  3. Вводимые числа должны быть неотрицательными. Причины:

    1. Если оба числа отрицательные – для обработки данной ситуации необходимо было-бы добавить довольно много условий, что сказалось бы на читабельности кода. К тому же основной задачей было «сложение в восмеричной системе счисления».

    2. Если одно из чисел отрицательно – в данном случае необходимо было бы написать алгоритм вычитания в восмеричной системе счисления, что в мою задачу не входило.