Програма переводу з однієї системи числення у іншу

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

? переводу з однієї системи числення (з основою p) в іншу систему (з основою q) можна розглядати у двох варіантах (випадках).

Варіант 1. Найбільш простий випадок - перевід з системи з основою p в систему з основою q (і навпаки)‚ якщо має місце співвідношення (k - ціле додатне число).

У цьому випадку перевід з системи з основою p в систему з основою q () здійснюють порозрядно‚ замінюючи кожну p-у цифру рівним їй k - розрядним числом‚ записаним в системі з основою числення q.

Зворотний перевід () здійснюють таким чином. Рухаючись від коми вправо і вліво‚ розбивають число‚ записане в системі числення з основою q на групи по k цифр. Якщо при цьому найлівіша або сама найправіша група виявиться неповною‚ то до неї дописують відповідно зліва чи справа стільки цифр‚ щоб кожна з них містила k цифр. Після цього кожну групу q-вих цифр замінюють однією p-овою цифрою‚ котра дорівнює числу‚ позначеному цією групою q-вих цифр.

Приклад 1. Системи числення з основою‚ кратною 2:

а) вісімкове число 273‚54 переводиться у двійкову систему (8 = 23) так:

 

273‚548 = (010)(111)(011)‚(101)(100)=10111011‚10112 ;

б) двійкове число 11011‚0011 переводиться у вісімкову систему числення так:

 

1011‚00112 = 11(011)‚(001)1 = (011)(011)‚(001)(100) = 33‚148 ;

 

в) шістнадцяткове число A5,B1E переводиться в двійкову систему числення (16 = 24) так:

 

A5,B1E16 = (1010)(0101),(1011)(0001)(1110) = 10100101,101100011112

 

Випадок 2. Перевід з системи з основою p в систему з основою q‚ якщо має місце співвідношення (k - ціле додатне число)‚ здійснюється окремо для цілої та дробової частин.

Перевід цілої частини числа. Число q записують в p-мі системі числення. Ділять в p-вій системі цілу частину числа на q і отримують остачу‚ яка є останньою цифрою шуканого числа. Отриману частку знову ділять на q і отримують остачу‚ яка є передостанньою цифрою шуканого числа і т.д. процес продовжують до тих пір‚ поки остача не стане меншою ‚ ніж число q. Остання остача буде першою (старшою) цифрою числа.

Перевід дробової частини. Число q записують в p-мі системі числення. Дріб множимо в p-вій системі на q. Ціла частина добутку дорівнює першій цифрі запису числа. Дробову частину добутку знову множимо на q. Ціла частина добутку дорівнює наступній цифрі запису числа в системі числення з основою q. Процес продовжують до тих пір поки не отримаємо добуток у вигляді цілого числа або не отримаємо потрібної кількості цифр шуканого дробу.

Приклад 2. Переведемо число 191‚687510 у вісімкову систему числення. Спочатку переводимо цілу частину:

191816238 31162 247 7

Таким чином‚ 19110 = 2778. Тепер переводимо двійкову частину:

 

06875855000840000

Таким чином‚ 0,687510 = 0,548. Остаточно‚ отримуємо 191,687510 = 277‚548.

Як бачимо‚ алгоритми переводу з однієї системи числення в іншу є надзвичайно простими‚ що дає змогу доволі просто здійснити їх реалізацію на ПК.

 

Розділ 3. Практична реалізація розвязку задачі

 

Практична реалізація задачі переводу чисел з однієї системи числення у іншу здійснена для напрямків: десяткова система числення двійкова‚ вісімкова та шістнядцяткова системи та навпаки. Для розвязку даної задачі розроблено модуль calc.tpu та програму kurs2.pas (текст представлено в додатку А).

В модулі реалізовано ряд процедур.

Процедура Hide_cursor. Робить курсор невидимим. Використовує процедуру Set_cursor та стандартну процедуру Intr .

Процедура Max_cursor. Встановлює вказівник курсора у вигляді прямокутника. Використовує процедуру Set_cursor.

Процедура Standart_cursor. Перетворює вказівник курсора до стандартного вигляду NBU(Non blinking nderline). Використовує процедуру Set_cursor.

Процедура Inf. Виводить на екран інформацію по програму та автора.

Процедура Check. Виконує перевірку на коректність числа‚ яке підлягає переводу. Перевірка здійснюється для всіх систем числення‚ вказаних вище. Для всіх систем числення довжина числа‚ що підлягає переводу не повинна перевищувати 20 цифр. Якщо ж ця умова не виконується‚ то виводиться повідомлення “Переповнення!”. Крім того‚ процедура перевіряє введене число на допустимість цифр. Для двійкової системи числення число може містити тільки цифри 0 та 1. Для вісімкової системи числення число повинно містити цифри від 0 до 7. Для шістнядцяткової системи число може містити довільні цифри (від 0 до 9) та символи A,B,C,D,E,F. Якщо перелічені умови не виконуються‚ то виводиться повідомлення “Недопустиме число!”.

Процедура Convert_to_10. Здійснює перевід числа з довільної системи числення у десяткову систему. В якості вхідного параметра використовує основу системи числення (system). Викликає процедуру Check.

Процедура Ten_to. Здійснює перевід з десяткової системи числення у довільну (з перелічених вище). Основа системи числення передається у процедуру у якості вхідного параметра (system). Викликає процедуру Check.

В програмі реалізовано наступні процедури:

Процедура Golovnemenu. Виводить на екран дисплея меню програми‚ котре пропонує користувачеві наступні опції: “Перевід з 10”‚ “Перевід в 10”‚ “Допомога”‚ “Вихід”. Переміщення по пунктах меню здійснюється з допомогою клавіш керування курсором‚ вибір опції меню здійснюється при натисканні клавіші Enter.

Процедура Sub_ten_to_. При виборі опції “Перевід з 10” реалізує спадне меню‚ яке пропонує користувачеві наступні опції “У двійкову”‚ “У вісімкову”‚ “У шістнадцяткову”. Переміщення по пунктах меню здійснюється з допомогою клавіш керуван