0 / 0 / 0
Регистрация: 21.03.2017
Сообщений: 3

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

16.03.2011, 16:36. Показов 4066. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
12366
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.03.2011, 16:36
Ответы с готовыми решениями:

Перевод чисел из любой системы счисления в десятичную
На форуме много тем похожих, но в них идет об 1 числе. А как сделать функцию, например для текста. Т.е. из текстового файла считывает...

Написать программу для перевода из двоичной системы в десятичную
Всем привет, помогите решить задачу.... Мне к 11-30 ехать на пересдвчу, а я в делфи 0 Помогите чем сожете, вообщем Задача ...

Функция перевода из двоичной системы счисления в десятичную
Доброго времени суток, помогите написать функцию перевода из двоичной системы счисления в десятичную

3
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
16.03.2011, 16:41
Пиши, кто ж против ..
0
 Аватар для Mawrat
13113 / 5894 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
16.03.2011, 21:31
Перевод записей чисел между системами счисления по основаниям 2..16.
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
153
154
155
156
157
158
type
  //Допустимые основания систем счисления. Перечень можно расширять.
  TBase = 2..16;
  //Допустимые числовые значения цифр. Перечень можно расширять.
  TDigNum = 0..15;
 
//Возвращает число, соответствующее цифре.
function DigToNum(const aDigit : Char) : TDigNum;
begin
  case aDigit of
    '0' : Result := 0;
    '1' : Result := 1;
    '2' : Result := 2;
    '3' : Result := 3;
    '4' : Result := 4;
    '5' : Result := 5;
    '6' : Result := 6;
    '7' : Result := 7;
    '8' : Result := 8;
    '9' : Result := 9;
    'A', 'a' : Result := 10;
    'B', 'b' : Result := 11;
    'C', 'c' : Result := 12;
    'D', 'd' : Result := 13;
    'E', 'e' : Result := 14;
    'F', 'f' : Result := 15;
  else
    raise Exception.Create('Ошибка. Незарегистрированная цифра: "' + aDigit + '", Code = #' + IntToStr(Ord(aDigit)) + '.');
  end;
end;
 
//Возвращает цифру, соответствующую числу.
function NumToDig(const aNum : TDigNum) : 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;
 
//Через параметр aStrX получает запись числа в системе счисления по основанию aBaseX.
//Возвращает запись этого же числа в системе счисления по основанию aBaseY.
//Точноть перевода дробной части - aPrec цифр после запятой в системе счисления по основанию aBaseY.
function XcToYc(const aStrX : String; const aBaseX, aBaseY : TBase; const aPrec : Byte) : String;
var
  //Знак, счётчик для циклов и позиция точки - разделителя целой и дробной частей.
  Sign, i, Pos1 : Integer;
  //Строка с представлением числа без знака в системе счисления по основанию aBaseX.
  StrX : String;
  //Само интересующее нас число, вес разряда и переменная для промежуточных вычислений.
  Num, Weight, NumTmp : Extended;
begin
  //Если на входе пустая строка.
  if Length(aStrX) = 0 then begin
    Result := '';
    Exit;
  end;
 
  //Определяем знак числа.
  if aStrX[1] = '-' then begin
    Sign := -1;
    StrX := Copy(aStrX, 2, Length(aStrX) - 1);
  end else begin
    Sign := 1;
    StrX := aStrX;
  end;
 
  //Ищем разделитель целой и дробной части.
  Pos1 := Length(StrX) + 1;
  for i := 1 to Length(StrX) do begin
    if StrX[i] in ['.', ','] then begin
      Pos1 := i;
      Break;
    end;
  end;
 
  Num := 0;
 
  //Учитываем в числе дробную часть aBaseX записи.
  Weight := 1;
  for i := Pos1 + 1 to Length(StrX) do begin
    Weight := Weight / aBaseX;
    Num := Num + DigToNum(StrX[i]) * Weight;
  end;
 
  //Учитываем в числе целую часть aBaseX записи.
  Weight := 1;
  for i := Pos1 - 1 downto 1 do begin
    Num := Num + DigToNum(StrX[i]) * Weight;
    Weight := Weight * aBaseX;
  end;
 
  //Переводим полученное число в aBaseY систему счисления.
 
  Result := '';
 
  //Переводим дробную часть.
  NumTmp := Frac(Num);
  i := 0;
  while (NumTmp <> 0) and (i < aPrec) do begin
    NumTmp := NumTmp * aBaseY;
    Result := Result + NumToDig( Round(Int(NumTmp)) );
    NumTmp := Frac(NumTmp);
    Inc(i);
  end;
 
  //Если дробная часть не нулевая, то добавляем точку - разделитель целой и дробной частей.
  if Result <> '' then Result := '.' + Result;
 
  //Переводим целую часть.
  NumTmp := Int(Num);
  repeat
    Result := NumToDig( Round(NumTmp) mod aBaseY ) + Result;
    NumTmp := Round(NumTmp) div aBaseY;
  until NumTmp = 0;
 
  //Добавляем сведения о знаке.
  if Sign = -1 then Result := '-' + Result;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  S : String;
begin
  Memo1.Clear;
  //Точность перевода 12 знаков после запятой в результирующей записи числа.
 
  //Перевод: четверичная запись - семеричная.
  S := XcToYc('23,22', 4, 7, 12);
  Memo1.Lines.Add('4->7: 23,22 -> ' + S);
  //Перевод: семеричная запись - четверичная.
  S := XcToYc('14,424242424242', 7, 4, 12);
  Memo1.Lines.Add('7->4: 14,424242424242 -> ' + S);
 
  //Перевод: шестнадцатиричная запись - двоичная.
  S := XcToYc('23,0D', 16, 2, 12);
  Memo1.Lines.Add('16->2: 23,0D -> ' + S);
  //Перевод: шестнадцатиричная запись - восмиричная.
  S := XcToYc('23,0D', 16, 8, 12);
  Memo1.Lines.Add('16->8: 23,0D -> ' + S);
  //Перевод: шестнадцатиричная запись - десятичная.
  S := XcToYc('23,0D', 16, 10, 12);
  Memo1.Lines.Add('16->10: 23,0D -> ' + S);
end;
2
0 / 0 / 0
Регистрация: 21.03.2017
Сообщений: 3
17.03.2011, 12:40
Спасибо большое!!! =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.03.2011, 12:40
Помогаю со студенческими работами здесь

Разработать программу перевода шестнадцатеричного числа в десятичную систему счисления
Разработать программу перевода шестнадцатеричного числа в десятичную систему счисления. Добавлено через 8 минут ...

Перевод чисел из двоичной системы счисления в десятичную
program Bin2Dec; {$APPTYPE CONSOLE} uses SysUtils; Var a: string; p, i, s, b, Code : integer;

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

Перевод чисел из восьмеричной системы счисления в десятичную, шестнадцатеричную, и двоичную
Перевод чисел из восьмеричной системы счисления в десятичную, шестнадцатеричную, и двоичную. Срочно пожалуста :wall: Добавлено через...

Программа для перевода чисел с 1-ой системы счисления в другую
Программа есть но не магу запустить на Delphi помогите пожалуйста. Желательно скинуть файл с делфи. Вот программа: unit Unit1; ...


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

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

Новые блоги и статьи
Непрерывная интеграция для пакета Python
Mr. Docker 22.06.2025
Было 4 часа утра пятницы, когда я выпустил новую версию нашей внутренней библиотеки для обработки данных. Релиз 0. 5. 2 содержал небольшой фикс для обработки дат в ISO формате, что может пойти не так?. . .
Продвинутый ETL на C# из OLTP БД в хранилище
stackOverflow 22.06.2025
Работая в сфере корпоративной аналитики, я постоянно сталкиваюсь с одним и тем же - нужны чистые, структурированные и, главное, свежие данные. Без них современные аналитические системы, машинное. . .
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru