Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 05.12.2013
Сообщений: 6
1

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

11.12.2013, 08:34. Показов 3070. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Перевести десятичную дробь в двоичную систему счисления while или repeat
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2013, 08:34
Ответы с готовыми решениями:

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

Перевести число из восьмеричной системы в десятичную систему счисления
написать программу помогите пож-та)

Перевод в десятичную систему счисления
Составить программу перевода числа из любой системы счисления в десятичную. Число А.

Перевод чисел в десятичную систему счисления
Задание: Написать программу перевода следующих чисел 10000011; 1010000110; 101100110,011011;...

1
79 / 79 / 84
Регистрация: 26.09.2012
Сообщений: 341
11.12.2013, 15:27 2
Лучший ответ Сообщение было отмечено kondak как решение

Решение

kondak,

Pascal
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
program Project1;
 
(*Переводит десятичную запись вещественного числа в двоичную.
Точность перевода дробной части - до aPrecision цифр после запятой.*)
function DecToBin(const aStr : String; const aPrecision : Byte) : String;
const
  BaseIn = 10;
  BaseOut = 2;
var
  i, PosDot : Integer;
  StrRes, vStr, StrSign, StrDot : String;
  Num, TmpNum, Weight : Extended;
begin
  DecToBin := '';
  if aStr = '' then Exit;
 
  (*Перевод десятичной записи в число.*)
 
  (*Определяем знак и десятичную запись числа без знака.*)
  if aStr[1] = '-' then begin
    StrSign := '-';
    vStr := Copy(aStr, 2, Length(aStr) - 1);
  end else begin
    StrSign := '';
    vStr := aStr;
  end;
 
  (*Ищем дробную точку.*)
  PosDot := Length(vStr) + 1;
  for i := 1 to Length(vStr) do begin
    if vStr[i] in ['.', ','] then begin
      PosDot := i;
      StrDot := vStr[i];
      Break;
    end;
  end;
 
  Num := 0;
 
  (*Переводим в число запись целой части.*)
  (*Движемся от младших разрядов - к старшим.*)
  (*Вес младшего разряда в целой части.*)
  Weight := 1;
  for i := PosDot - 1 downto 1 do begin
    case vStr[i] of
      '0'  : Num := Num + 0 * Weight; (*Эту строку можно закоментовать.*)
      '1'  : Num := Num + 1 * Weight;
      '2'  : Num := Num + 2 * Weight;
      '3'  : Num := Num + 3 * Weight;
      '4'  : Num := Num + 4 * Weight;
      '5'  : Num := Num + 5 * Weight;
      '6'  : Num := Num + 6 * Weight;
      '7'  : Num := Num + 7 * Weight;
      '8'  : Num := Num + 8 * Weight;
      '9'  : Num := Num + 9 * Weight;
    else
      Writeln('Ошибка! Незарегистрированная цифра.');
    end;
    (*Вес следующего разряда.*)
    Weight := Weight * BaseIn;
  end;
 
  (*Переводим в число запись дробной части.*)
  (*Движемся от старших разрядов - к младшим.*)
  (*Вес старшего разряда в дробной части.*)
  Weight := 1 / BaseIn;
  for i := PosDot + 1 to Length(vStr) do begin
    case vStr[i] of
      '0'  : Num := Num + 0 * Weight; (*Эту строку можно закоментовать.*)
      '1'  : Num := Num + 1 * Weight;
      '2'  : Num := Num + 2 * Weight;
      '3'  : Num := Num + 3 * Weight;
      '4'  : Num := Num + 4 * Weight;
      '5'  : Num := Num + 5 * Weight;
      '6'  : Num := Num + 6 * Weight;
      '7'  : Num := Num + 7 * Weight;
      '8'  : Num := Num + 8 * Weight;
      '9'  : Num := Num + 9 * Weight;
    else
      Writeln('Ошибка! Незарегистрированная цифра.');
    end;
    (*Вес следующего разряда.*)
    Weight := Weight / BaseIn;
  end;
 
  (*Переводим число в двоичную запись.*)
 
  StrRes := '';
 
  (*Перевод целой части.*)
  TmpNum := Int(Num);
  repeat
    (*Определяем очередную двоичную цифру.*)
    (*Аналог (TmpNum mod BaseOut) для случая вещественных операндов.*)
    case Round( TmpNum - Int(TmpNum / BaseOut) * BaseOut ) of
      0 :  StrRes := '0' + StrRes;
      1 :  StrRes := '1' + StrRes;
    end;
    (*Удаляем из числа текущий разряд.*)
    TmpNum := Int(TmpNum / BaseOut);
  until TmpNum = 0;
 
  (*Перевод дробной части с точностью до aPrecision знаков после запятой.*)
  i := 0;
  TmpNum := Frac(Num);
  while (TmpNum <> 0) and (aPrecision > i) do begin
    if i = 0 then StrRes := StrRes + StrDot;
    (*Определяем очередную двоичную цифру.*)
    TmpNum := TmpNum * BaseOut;
    case Round(Int(TmpNum)) of
      0 :  StrRes := StrRes + '0';
      1 :  StrRes := StrRes + '1';
    end;
    (*Удаляем из числа текущий старший разряд.*)
    TmpNum := Frac(TmpNum);
    Inc(i);
  end;
 
  DecToBin := StrSign + StrRes;
end;
 
const
  Precision = 10;
var
  S : String;
begin
  repeat
    Writeln('Введите запись вещественного числа в десятичной системе счисления:');
    Readln(S);
    S := DecToBin(S, Precision);
    Writeln('Запись этого же числа в двоичной системе счисления');
    Writeln('с точностью до ', Precision, ' цифр после запятой:');
    Writeln(S);
    Writeln('Повторить - Enter, выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
0
11.12.2013, 15:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2013, 15:27
Помогаю со студенческими работами здесь

Перевод из двоичной в десятичную систему счисления
Помогите найти ошибку. var bin: string; dec: longint; i,j: byte; begin

Перевод числа в двоичную систему счисления
Подскажите пжл. Program U; Uses Crt; Var d,j:Byte; Function DS(z:Byte):Byte; Var i:Byte; ...

Перевод IP-адреса в двоичную систему счисления
Ребят,у меня проблема.Вот задача:Известно, что IP-адрес записывается в нескольких вариантах....

Системы счисления. Перевести данное натуральное число в 16-тиричную систему счисления
Составить программу перевода данного натурального числа n в 16теричную систему счисления....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru