Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/28: Рейтинг темы: голосов - 28, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 26.03.2010
Сообщений: 3
1

Программа для перевода чисел из 16 сс в 10 сс

26.03.2010, 20:24. Просмотров 5167. Ответов 2
Метки нет (Все метки)

нужно составить программу на паскале для перевода из 16тиричной системы счисления в 10ричную! имея в результате число хотябы 12 знаков до запятой и около 5 знаков посленеё!!! Заранее всем спасибо! Ну реально бошка кипит уже запарился! и время как на зло поджимает!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2010, 20:24
Ответы с готовыми решениями:

Программа для перевода чисел
Вывести на экран таблицу значений десятичных цифр в двоичной системе счисления.

Программа для перевода чисел из 16 системы в 2 на C++
Нужно написать программу, в которой пользователь вводит число, и оно переводится из 16 в 2....

Программа для перевода чисел из 10 системы в 2
Народ помогите написать программу для перевода чисел из 10 системы в двоичную В консоле Если надо...

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

2
13057 / 5843 / 1705
Регистрация: 19.09.2009
Сообщений: 8,807
27.03.2010, 02:25 2
Переводит из шестнадцатиричной в десятичную систему. Числа - любые: вещественные, целые, положительные или отрицательные. Точность перевода дробной части - Prec десятичных цифр после запятой. Prec - это константа - задаётся в коде программы.
Кстати, это по сути готовый алгоритм для перевода из любой системы счисления - в любую. Для этого достаточно константы BaseHex и BaseDec оформить в виде парметров процедуры.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
program Project1;
 
(*Возвращает число, соответствующее цифре.*)
function DigToNum(const aDig : Char) : Byte;
begin
  case aDig of
    '0' : DigToNum := 0;
    '1' : DigToNum := 1;
    '2' : DigToNum := 2;
    '3' : DigToNum := 3;
    '4' : DigToNum := 4;
    '5' : DigToNum := 5;
    '6' : DigToNum := 6;
    '7' : DigToNum := 7;
    '8' : DigToNum := 8;
    '9' : DigToNum := 9;
    'A', 'a' : DigToNum := 10;
    'B', 'b' : DigToNum := 11;
    'C', 'c' : DigToNum := 12;
    'D', 'd' : DigToNum := 13;
    'E', 'e' : DigToNum := 14;
    'F', 'f' : DigToNum := 15;
  end;
end;
 
(*Возвращает цифру, соответствующую числу.*)
function NumToDig(const aNum : Byte) : Char;
begin
  case aNum of
    0 : NumToDig := '0';
    1 : NumToDig := '1';
    2 : NumToDig := '2';
    3 : NumToDig := '3';
    4 : NumToDig := '4';
    5 : NumToDig := '5';
    6 : NumToDig := '6';
    7 : NumToDig := '7';
    8 : NumToDig := '8';
    9 : NumToDig := '9';
    10 : NumToDig := 'A';
    11 : NumToDig := 'B';
    12 : NumToDig := 'C';
    13 : NumToDig := 'D';
    14 : NumToDig := 'E';
    15 : NumToDig := 'F';
  end;
end;
 
(*Возвращает представление числа в десятичной системе счисления.*)
function HexToDec(const aStrHex : String) : String;
const
  (*Основание шестнадцатиричной системы счисления.*)
  BaseHex = 16;
  (*Основание десятичной системы счисления.*)
  BaseDec = 10;
  (*Точноть перевода дробной части - Prec десятичных цифр после запятой.*)
  Prec = 15;
var
  (*Знак, счётчик для циклов и позиция десятичной точки.*)
  Sign, i, Pos1 : Integer;
  (*Строка с представлением шестнадцатиричной записи без знака и строка
  с представлением десятичной записи без знака.*)
  StrHex, StrDec : String;
  (*Само интересующее нас число, вес разряда и переменная для промежуточных вычислений.*)
  Num, Weight, NumTmp : Extended;
begin
  (*Если на входе пустая строка.*)
  if Length(aStrHex) = 0 then begin
    HexToDec := '';
    Exit;
  end;
 
  (*Определяем знак числа.*)
  if aStrHex[1] = '-' then begin
    Sign := -1;
    StrHex := Copy(aStrHex, 2, Length(aStrHex) - 1);
  end else begin
    Sign := 1;
    StrHex := aStrHex;
  end;
 
  (*Ищем десятичную точку.*)
  Pos1 := Length(StrHex) + 1;
  for i := 1 to Length(StrHex) do begin
    if StrHex[i] in ['.', ','] then begin
      Pos1 := i;
      Break;
    end;
  end;
 
  Num := 0;
 
  (*Учитываем в числе дробную часть шестнадцатиричной записи.*)
  Weight := 1;
  for i := Pos1 + 1 to Length(StrHex) do begin
    Weight := Weight / BaseHex;
    Num := Num + DigToNum(StrHex[i]) * Weight;
  end;
 
  (*Учитываем в числе целую часть шестнадцатиричной записи.*)
  Weight := 1;
  for i := Pos1 - 1 downto 1 do begin
    Num := Num + DigToNum(StrHex[i]) * Weight;
    Weight := Weight * BaseHex;
  end;
 
  (*Переводим полученное число в десятичную систему счисления.*)
 
  StrDec := '';
 
  (*Переводим дробную часть.*)
  NumTmp := Frac(Num);
  i := 0;
  while (NumTmp <> 0) and (i < Prec) do begin
    NumTmp := NumTmp * BaseDec;
    StrDec := StrDec + NumToDig( Round(Int(NumTmp)) );
    NumTmp := Frac(NumTmp);
    Inc(i);
  end;
 
  (*Если дробная часть не нулевая, то добавляем десятичную точку.*)
  if StrDec <> '' then StrDec := '.' + StrDec;
 
  (*Переводим целую часть.*)
  NumTmp := Int(Num);
  repeat
    StrDec := NumToDig( Round(NumTmp) mod BaseDec ) + StrDec;
    NumTmp := Round(NumTmp) div BaseDec;
  until NumTmp = 0;
 
  (*Добавляем сведения о знаке.*)
  if Sign = -1 then StrDec := '-' + StrDec;
 
  HexToDec := StrDec;
end;
 
var
  StrTmp : String;
begin
  repeat
    Writeln('Введите число в шестнадцатиричной системе.');
    Readln(StrTmp);
 
    StrTmp := HexToDec(StrTmp);
 
    Writeln('Запись этого числа в десятичной системе счисления имеет вид:');
    Writeln(StrTmp);
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(StrTmp);
  until StrTmp <> '';
end.
2
0 / 0 / 0
Регистрация: 26.03.2010
Сообщений: 3
28.03.2010, 15:00  [ТС] 3
а можно данную программу написать более проще, ну не для профи пользователей... а то я боюсь, что мне препод неповерит!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2010, 15:00

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

Программа для перевода десятичных чисел в восьмеричные
Напишите программу для перевода десятичных чисел в восьмеричные. Для ввода десятичного числа...

Программа для перевода чисел из 10сс в 2сс
Всем здорова! Вот тут такая проблема, в код написан правильно, работает, но вот, под строку вывода...

Программа для перевода арабских чисел в римские
Составить программу для перевода арабских чисел в римские и для обратной операции. Например, 255 =...

Программа для перевода чисел из строки в 16-тиричную сс и обратно
Необходимо составить программу, которая читает строку, переводит ее в 16-тиричное число и потом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.