Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 24.03.2017
Сообщений: 2
1

Перевод действительного числа X из с/с с основанием q в с/с с основанием p (нужны комментарии)

24.03.2017, 01:54. Показов 973. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача
Разработать программу, выполняющую перевод действительного числа X заданного в системе счисления с основанием q в систему счисления с основанием p (2≤ q,p ≤16).

На просторах интернета удалось найти программу, но никак не могу в ней разобраться, помогите пожалуйста

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
program lab_14;
 
const
     digit:string[16]='0123456789ABCDEF';
 
function DecimalToXStr (aBase : Integer; aVal : double; Precision:integer) : String;
var
  Val : double;
  IntVal : Int64;
  FracVal : double;
  StrInt : String;
  StrFrac : String;
  i : Integer;
begin
  // Получаем целую и дробную части числа.
  IntVal := Trunc(aVal);
  FracVal := Frac(aVal);
 
  //Переводим целую часть.
  StrInt := '';
  repeat
    StrInt := digit[IntVal mod aBase+1] + StrInt;
    IntVal := IntVal div aBase;
  until IntVal = 0;
 
  // Если дробная часть = 0, то перевод закончен.
  if FracVal = 0 then begin
    Result := StrInt;
    exit;
  end;
 
  //Переводим дробную часть. Точность - до Precision цифр после запятой.
  StrFrac := '';
  for i := 1 to Precision do begin
    Val := FracVal * aBase;
    StrFrac := StrFrac + digit[Trunc(Val)+1];
    FracVal := Frac(Val);
    //Если дробная часть = 0, то перевод закончен.
    if FracVal = 0 then Break;
  end;
  if StrFrac<>'' then begin  StrInt:=StrInt + '.' + StrFrac;
    while StrInt[length(StrInt)]='0' do delete(StrInt,length(strint),1);
  end;
  Result:=StrInt;
end;
 
function ToDec(n:string;r:Int64):Int64;
var
  m:Int64;
  i:longint;
begin
Result:=0;
if trim(n)<>'' then begin // пустые строки не обрабатываем
  m:=0;
  while pos('0',n)=1 do  delete(n,1,1);//убираем лидирующие 0
    for i:=1 to length(n) do m:=m*r+pos(n[i],digit)-1;//сама формула перевода
    if (m>=MaxInt64) or (m<0) then begin//введено число больше чем Int64
      writeln('Достигнут максимальный предел вычислений!');
      m:=0;
    end;
    Result:=m;
  end;
end;
 
 
function ToDecNew(n:string;r:Integer):double;
var
  f:double;
  i:integer;
  r1:int64;
begin
//  if pos('.',n)=0 then Result:=ToDec(n,r) else begin
    i:=pos('.',n);
    if i>0 then begin
    f:=ToDec(copy(n,1,i-1),r);
    delete(n,1,i);
    r1:=r;
    for i:=1 to length(n) do begin
      f:=f+(pos(n[i],digit)-1)/r1;//сама формула перевода
      r1:=r1*r;
    end;
    Result:=f;
  end else Result:=ToDec(n,r);
end;
 
var
  p,q:integer;
  n:string;
begin
  write('Число:');readln(n);
  write('система счисления1:');readln(p);
  write('система счисления2:');readln(q);
  writeln('ответ:',DecimalToXStr (q,ToDecNew(n,p),5));
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2017, 01:54
Ответы с готовыми решениями:

Перевод числа из СС с основанием 10 в СС с основанием N и обратно
Написал перевод из А10 в АN. Помогите оформить обратную процедуру. var a1,b: integer; ...

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

Найти сумму цифр числа в системе счисления с основанием p
Help people!!!! Нужна программа в Паскале... Вот текст задачи.... Найти сумму цифр числа в системе...

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

0
24.03.2017, 01:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2017, 01:54
Помогаю со студенческими работами здесь

Перевод числа из системы с основанием 256
Помогите со следующей проблемой. Есть очень длинное число в стандартные типы не влазит. Есть массив...

Перевод заданного числа в систему с основанием 10
Заданы основание системы счисления p(p&lt;14) и строка s, представляющая собой запись числа в этой...

Число, заданное в системе счисления с основанием p перевести в систему с основанием q
Число, заданное в системе счисления с основанием p перевести в систему с основанием q

Осуществить перевод заданного числа в систему с основанием 10
Заданы основание системы счисления p(p&lt;17) и строка s, представляющая собой запись числа в этой...


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

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