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

Перевод десятичного числа в шестнадцатеричное

Задача:

Пользователь вводит число, представленное в десятичной системе счисления. Программа должна преобразовывать его в число, выраженное в шестнадцатеричной системе счисления. Результат вывести на экран

Алгоритм решения задачи:

Алгоритм перевода десятичного числа в другую систему счисления одинаков. Однако в случае шестнадцатеричной системы он усложнен тем, что цифры с 10 до 15 должны быть заменены буквами.

Поэтому сначала находится остаток от деления на 16. Если он представляет собой двузначное число, то переменной ch присваивается соответствующий символ. Иначе происходит перевод цифры в ее символьное представление. Символ добавляется к строке.

Программа на языке Паскаль:

var

decimal: word;

function hexadecimal(decimal:word):string;

var digit: byte; ch: char;

begin

while decimal > 0 do begin

digit := decimal mod 16;

if digit in [10..15] then

case digit of

10: ch := 'A';

11: ch := 'B';

12: ch := 'C';

13: ch := 'D';

14: ch := 'E';

15: ch := 'F'

end

else

ch := chr(ord('0') + digit);

hexadecimal := ch + hexadecimal;

decimal := decimal div 16

end;

end;

begin

write('Decimal: ');

readln(decimal);

writeln(hexadecimal(decimal));

readln

end.

Перевод десятичного числа в двоичную или восьмеричную систему счисления.

Задача:

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

Описание переменных:

decimal – десятичное число;

bin_oct – основание системы счисления, в которую следует его перевести.

Алгоритм решения задачи:

Пока десятичное число больше 0

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

  2. Сохранить результат целочисленного деления десятичного числа на основание системы счисления.

Программа на языке Паскаль:

var

decimal: word;

bin_oct: byte;

function binary_octal(decimal:word;bin_oct:byte):string;

begin

if (bin_oct <> 2) and (bin_oct <> 8) then

write('Error')

else

while decimal > 0 do begin

binary_octal := chr(ord('0') + (decimal mod bin_oct)) + binary_octal;

decimal := decimal div bin_oct

end;

end;

begin

write('Decimal: ');

readln(decimal);

write('Binary or octal (2,8): ');

readln(bin_oct);

writeln(binary_octal(decimal,bin_oct));

readln

end.

Перевод двоичного числа в десятичное

Задача:

Двоичное число, введенное пользователем программы, преобразовать в десятичное число. Результат вывести на экран.

Описание переменных:

binary – двоичное число;

n – его длина;

digit – цифра очередного разряда;

m - степень двойки;

decimal – десятичное число.

Алгоритм решения задачи:

Основная ветка программы:

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

2. Измеряется его длина, т.е. количество символов. Это необходимо для возведения двойки каждого разряда в соответствующую ему степень (см. формулу).

3. В цикле перебирается каждый символ строки.

a. Символ преобразовывается в число.

b. Находится степень, в которую должна возводиться двойка. Для первого символа она на единицу меньше длины строки. Для каждого следующего уменьшается на единицу.

c. Если число разряда не равно 0, то

d. возвести двойку в степень,

e. а результат добавить к десятичному числу.

Функция возведения двойки в заданную степень:

1. Получить степень

2. Присвоить результату функции значение 1.

3. Умножать результат на 2, пока не будет достигнута заданная степень.

Программа на языке Паскаль:

var

binary: string;

n: byte;

digit: byte;

m: byte;

decimal: integer;

i: byte;

function pow2(m: byte):integer;

var i: byte;

begin

pow2 := 1;

for i := 1 to m do

pow2 := pow2 * 2;

end;

begin

write('Binary: ');

readln(binary);

n := length(binary);

decimal := 0;

m := n;

for i:=1 to n do begin

digit := ord(binary[i]) - ord('0');

m := m - 1;

if digit = 1 then

decimal := decimal + pow2(m);

end;

writeln('Decimal: ',decimal);

readln

end.