Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
kverrian
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 5
1

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

22.04.2012, 20:46. Просмотров 2690. Ответов 2
Метки нет (Все метки)

Господа .... очень нужна помощь ... мне необходимо написать программу по переводу из любой сс(<16) в любую(<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
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
program zadanie8;
uses crt;
const c : array [1..16] of char = ('0','1','2','3','4','5','6','7','8','9','A',
'B','C','D','E','F');
chara : array [1..16] of byte =(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
var s,sdo,spos:string;
    a,a2,i,b,dec,f,sa1: integer;
    mas : array [1..100]of integer;
    rrr,sa2:real;
procedure razdstr(s:string);
var l,k,i:integer;
    flag: boolean;
 begin
   sdo:='';
   spos:='';
   l:=length(s);
   flag:=false;
   for i:=1 to l do
   if s[i] in ['a'..'f']then
   s[i]:=upcase(s[i]);
   for i:=1 to l do
   if(s[i]='.')then flag:=true;
   if (flag = false)then s:=s+'.0';
   k:=pos('.',s);
  for i:=1 to k-1 do
     sdo:=sdo+s[i];
  for i:=k+1 to l do
     spos:=spos+s[i];
  end;
function pow(ar,k :integer):integer;
var i,res,b : integer;
 begin
   res :=1;
   if (k<0)then
   b:=round(1/ar);
   k:=abs(k);
   if k=0 then pow:=1;
   for i:=1 to k do
      res:=res*ar;
       pow:=res;
  end;
function sdoone(s:string;a:integer):integer;
var l,j,sum,k:integer;
    z:string;
    flag:boolean;
  begin
      if a in [2..16] then
      begin           z:='';
         l:=length(s);
         for i:=l downto 1 do
         z:=z+s[i];
         for i:=1 to l do
          if z[i] in ['0'..c[a]] then flag :=true;
         k:=l-1;sum:=0;
         for i:=1 to l do
         for j:=1 to 16 do
          if (z[i] = c[j])then
           begin
            sum:=sum+(chara[j]*pow(a,i-1));
            k:=k-1;
          end;end;
          if (flag = false)then
          begin
          writeln('error in notation');
          readln;
          halt(1);
          end;
    sdoone:=sum;
  end;
function sposone(s:string;a:integer):real;
         var k,x:real;
         p,i,n:integer;
         flag:boolean;
begin
           x:=0;
           p:=pos('.',s);
           if (p>0)then
    begin
      k:=a;
       for i:=p+1 to length(s) do
         begin
          if s[i] in ['0'..c[a]] then flag:=true;
          n:=ord(s[i]);
          if n>=ord('A')then n:=n-ord('A')+10
           else n:=n-ord('0');
           x:=x+n/k;
           k:=k*k;
         end;
    end;
    if(flag=false)then
    begin
          writeln('error in notation');
          readln;
          halt(1);
          end;
   sposone:=x;
end;
function two(dec,a:integer):string;
 var d,u:integer;
     rez:string;
     b:array [1..30]of byte;
  begin
  u:=0; rez:='';d:=dec;
while d>0 do
  begin
    inc(u);
    b[u]:=d mod a;
    d:=d div a;
  end;
for i:=u downto 1 do
  rez:=rez+c[b[i]+1];
  two:=rez;
     end;
function spostwo(d:real;a:integer;spos:string):string;
 var  s:string;
      b:integer;
      z:real;
       begin
       s:='.';z:=d;
       while (length(s)-1<length(spos)) do
         begin
          z:=z*a;
          b:=trunc(z);
          s:=s+c[b+1];
          z:=z-b;
          end;
       spostwo:=s;
      end;
 
begin
clrscr;
writeln('enter cislo');
 readln(s);
writeln('enter osnovanie');
readln(a);
writeln('enter second notation');
readln(a2);
razdstr(s);
dec:=sdoone(sdo,a);
rrr:=sposone(s,a);
writeln('in ',a2);
writeln('result ',two(dec,a2),spostwo(rrr,a2,spos));
readln;
end.
Добавлено через 22 часа 45 минут
кто может допилить прошу писать в личку
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2012, 20:46
Ответы с готовыми решениями:

Программа перевода чисел из одной системы счисления в другую
8.Программа перевода чисел из одной системы счисления в другую. (Из любой – в...

Программа для перевода чисел из одной системы счисления в другую
uses crt; var cs1,cs2,res,change:integer; TD:string; {функция...

Программа выолняет перевод чисел из одной системы счисления в другую. Остался один небольшой пробел в программе.
Нужно подпрограммами реализовать проверку корректности введенного числа...

Системы счисления. Перевод из одной системы счисления в другую.
Задание: Написать программу на языке С++ или Turbo Pascal для переведа числа,...

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

2
Skriptik
-37 / 6 / 1
Регистрация: 26.06.2011
Сообщений: 94
23.12.2012, 01:02 2
Тебе надо что, перевести в любое исчисление?

Добавлено через 11 минут
Если нужна прога то я дам ее тебе
0
Draakon
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 6
08.01.2013, 11:24 3
Хорошая программка, как-раз практически то, что мне нужно, подошла с минимальными изменениями.
Только может мне кто-то объяснить назначения sdoone и sposone, а то я так и не понял, хотя сами шаги понятны, но общее предназначение все-еще в тумане. Да, у меня явно не очень с некоторыми разделами математики Я просто не знаю, на какой теории строится их использование.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2013, 11:24

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

Перевести из одной системы счисления в другую
Натуральное число в p-ичной системе счисления задано своими цифрами,...

Перевод из одной системы счисления в другую
Перевести десятичное число в двоичную систему , а из двоичной системы в систему...


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

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

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