См. перевод десятичного числа в двоичную и восьмеричную системы счисления, перевод десятичного числа в шестнадцатеричное число, перевод двоичного числа в десятичное, перевод шестнадцатеричного числа в десятичное число.
Перевод восьмеричного числа в десятичное почти аналогичен переводу двоичного.
var notation: byte; decimal: integer; binary, octal, hexa: string; function decimal_binary(decimal:integer): string; begin decimal_binary := ''; if decimal = 0 then decimal_binary := '0'; while decimal > 0 do begin decimal_binary := chr(ord('0') + (decimal mod 2)) + decimal_binary; decimal := decimal div 2 end; end; function decimal_octal(decimal:integer): string; begin decimal_octal := ''; if decimal = 0 then decimal_octal := '0'; while decimal > 0 do begin decimal_octal := chr(ord('0') + (decimal mod 8)) + decimal_octal; decimal := decimal div 8 end; end; function decimal_hexa(decimal:integer):string; var digit:byte; ch:char; begin decimal_hexa := ''; if decimal = 0 then decimal_hexa := '0'; 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); decimal_hexa := ch + decimal_hexa; decimal := decimal div 16 end; end; function binary_decimal(binary:string):integer; var n,m,i,j,digit:byte; pow:integer; begin n := length(binary); 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 begin pow := 1; for j:=1 to m do pow := pow * 2; binary_decimal := binary_decimal + pow; end; end; end; function octal_decimal(octal:string):integer; var n,m,i,j,digit:byte; pow:integer; begin n := length(octal); octal_decimal := 0; m := n; for i:=1 to n do begin digit := ord(octal[i]) - ord('0'); m := m - 1; pow := 1; for j:=1 to m do pow := pow * 8; octal_decimal := octal_decimal + digit * pow; end; end; function hexa_decimal(hexa:string):integer; var n,m,i,j,digit:byte; pow:integer; ch: char; begin n := length(hexa); hexa_decimal := 0; m := n; for i:=1 to n do begin ch := hexa[i]; if ch in ['A'..'F'] then case ch of 'A': digit := 10; 'B': digit := 11; 'C': digit := 12; 'D': digit := 13; 'E': digit := 14; 'F': digit := 15 end else digit := ord(ch) - ord('0'); m := m - 1; pow := 1; for j:=1 to m do pow := pow * 16; hexa_decimal := hexa_decimal + digit * pow; end; end; begin write('Notation: '); readln(notation); write('Number: '); if notation = 2 then begin readln(binary); decimal := binary_decimal(binary); octal := decimal_octal(decimal); hexa := decimal_hexa(decimal) end else if notation = 8 then begin readln(octal); decimal := octal_decimal(octal); binary := decimal_binary(decimal); hexa := decimal_hexa(decimal) end else if notation = 10 then begin readln(decimal); binary := decimal_binary(decimal); octal := decimal_octal(decimal); hexa := decimal_hexa(decimal) end else if notation = 16 then begin readln(hexa); decimal := hexa_decimal(hexa); binary := decimal_binary(decimal); octal := decimal_octal(decimal) end else writeln('Must be goto end.'); writeln('notation:':10,'2':10,'8':5,'10':5,'16':5); writeln('value:':10,binary:10,octal:5,decimal:5,hexa:5); readln end.
Последние комментарии
1 день 11 часов назад
2 дня 13 часов назад
2 дня 14 часов назад
2 дня 19 часов назад
3 дня 11 часов назад
3 дня 12 часов назад
5 дней 10 часов назад
6 дней 12 часов назад
1 неделя 3 дня назад
1 неделя 3 дня назад