,   CyberForum.ru
CyberForum.ru - > >
 
 
SuPeR XaKer
2830 / 1959 / 44
: 23.09.2010
: 4,889
06.02.2011, 22:42       #1
. . :
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
uses
  CRT;
 
const
  a: string[36] = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; {   
   }
var
  n, r: real;
  rez, s, s2, s3: string;
  t, cc, ind, cc2, k: integer;
 
{       }
procedure Del(var ss: string);
var
  i: integer;
begin
  ind := 0;  
  s2 := '';
  for i := 1 to length(ss) do  {  }
    if ss[i] in [',', '.'] then {     }
    begin
      ind := i; {  }
      break{ }
    end
    else    {}
      s2 := s2 + ss[i]; {      }
  s3 := '';  { }
  if ind <> 0 then {    [',','.']    }
  begin
    delete(s, 1, ind); {     ind   
    (..   + [',','.'])}
    s3 := ss; {     s3 (..  )}
  end;
end;
 
{   (  )     10-}
function ToDec(var ss: string; cc: byte): integer;
var
  i, n, sum: integer;
begin
  sum := 0;
  n := length(ss); { n -   ss}
  for i := 1 to n do {  }
  begin
    dec(n); {   1}
    sum := sum + round((pos(ss[i], a) - 1) * exp(ln(cc) * n)); {  ( 
       -1 (pos(ss[i],a)-1))   dec(n)}
  end;
  ToDec := sum;
end;
 
{       10-   }
function Cel(d: real; c: integer): string;
var
  s: string;
  n2: integer;
begin
  n2 := round(int(d)); {    }
  s := '';   
  repeat
    s := ((a[n2 mod c + 1]) + s); {          
           + 1      16, 
        s}
    n2 := n2 div c;
  until (n2 = 0);
  Cel := s;
end;
 
{       10-   }
function Drob(var d: real; t, c: integer): string;
var
  s: string;
  l2, k, n3: real;
  i, l: integer;
begin
  k := d - int(d);
  s := '';
  i := 0;
  if t <> 0 then  {    0  }
  begin
    repeat
      l2 := k * c;
      k := frac(l2); {   c ( )    
        }
      s := s + a[round(int(l2)) + 1]; {      round(int(l2))+1
      (      c +1)}
      inc(i); { }
    until i = t;
  end
  else  {}
   s := '0'; { s '0'}
  Drob := s;
end;
 
{ ( )      10-}
function drob2(ss: string; c: integer): real;
var
  i: integer;
  sum: real;
begin
  for i := 1 to length(ss) do {   (  )}
    sum := sum + (pos(ss[i], a) - 1) * exp(ln(c) * -i); {    -1
        -i}
  drob2 := sum;
end;
 
begin
  ClrScr;
  repeat
    write('    : ');
    readln(cc2)
  until cc2 in [2..36]; { }
  write('     : ');
  readln(cc);
  if cc2 = 10 then {   10    Cel  Drob}
  begin
    write('   ', cc2, '- : ');
    readln(n);
    write(' : ');
    readln(t);
    if ((n - round(int(n))) = 0) then {   =0   Cel}
      rez := Cel(n, cc)
    else     {     ,    }
      rez := Cel(n, cc) + ',' + Drob(n, t, cc);
  end
  else {     10- }
  begin
    write('   ', cc2, '- : ');
    readln(s);
    Del(s); {      }
    if ind = 0 then
      rez := Cel(ToDec(s2, cc2), cc) {     10- ,   
     10-  }
    else
    begin
      r := drob2(s3, cc2); {   }
      rez := Cel(ToDec(s2, cc2), cc) + ',' + drob(r, length(s3), cc); {   
        }
    end;
  end;
  write(rez); { THE END }
  readkey
end.
:
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
uses
  CRT;
 
const
  a: string[36] = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; {ç*ä*¸ì ñòðîêó äëÿ ïîèñê*
 â *åé ñèìâîëîâ}
var
  n: real;
  rez, s, s2, s3: string;
  t, cc, ind, cc2, k: integer;
 
{ïðîöåäóð* äëÿ ð*çäåëå*èÿ äðîá*îé è öåëîé ÷*ñòè ÷èñë*}
procedure Del(var ss: string);
var
  i: integer;
begin
  ind := 0;  {è*èöè*ëèçèðóåì ïåðåìå**ûå}
  s2 := '';
  for i := 1 to length(ss) do  {èä¸ì ïî ñòðîêå}
    if ss[i] in [',', '.'] then {åñëè ñèìâîë âõîäèò â ì*îæåñòâî òî}
    begin
      ind := i; {ç*ïîì*èëè åãî è*äåêñ}
      break{ïðåðâ*ëè öèêë}
    end
    else    {è**÷å}
      s2 := s2 + ss[i]; {ïèøèì â ñòðîêó ïî ñèìâîë*ì öåëóþ ÷*ñòü}
  s3 := '';
  if ind <> 0 then {åñëè ñèìâîë èç ì*îæåñòâ* [',','.'] åñòü â ñòðîêå òî}
  begin
    delete(s, 1, ind); {óä*ëÿåì ñ ïåðâîé ïîçèöèè ïî ind ýëåìå*òû èç ñòðîêè
    (ò.å. öåëóþ ÷*ñòü + [',','.'])}
    s3 := ss; {îñò*òîê èñõîä*îé ñòðîêè ç**îñèì â s3 (ò.å. äðîá*óþ ÷*ñòü)}
  end;
end;
 
{ôó*êöèÿ äëÿ ïåðåâîä* (öåëîé ÷*ñòè ÷èñë*) èç ëþáîé ÑÑ â 10-þ}
function ToDec(var ss: string; cc: byte): integer;
var
  i, n, sum: integer;
begin
  sum := 0;
  n := length(ss); {ïðèñâ*èâ*åì n - äëè*ó ñòðîêè ss}
  for i := 1 to n do {èä¸ì ïî ñòðîêå}
  begin
    dec(n); {óìå*üø*åì ñ÷¸ò÷èê ** 1}
    sum := sum + round((pos(ss[i], a) - 1) * exp(ln(cc) * n)); {ñóììèðóåì ÷èñëî (**éäå**îå â
    ñòðîêå ïî ïîçèöèè ñèìâîë*-1 (pos(ss[i],a)-1)) â ñòåïå*è dec(n)}
  end;
  ToDec := sum;
end;
 
{ôó*êöèÿ äëÿ ïåðåâîä* öåëîé ÷*ñòè ÷èñë* èç 10-é â ëþáóþ ññ}
function Cel(d: real; c: integer): string;
var
  s: string;
  n2: integer;
begin
  n2 := round(int(d)); {áåð¸ì öåëóþ ÷*ñòü îò ÷èñë*}
  s := '';   {è*èöè*ëèçèðóåì ïåðåìå**óþ}
  repeat
    s := ((a[n2 mod c + 1]) + s); {ïîê* ÷èñëî *å áóäåò ð*â*î *óëþ áåð¸ì öåëóþ ÷*ñòü ïðè
    äåëå*èè ÷èñë* ** îñ*îâ**èå è áåð¸ì îñò*òîê + 1 îò äåëå*èÿ öåëîé ÷*ñòè ** 16, ç*ïèñûâ*åì
    ðåçóëüò*ò ïîñèìâîëü*î â ñòðîêó s}
    n2 := n2 div c;
  until (n2 = 0);
  Cel := s;
end;
 
{ôó*êöèÿ äëÿ ïåðåâîä* äðîá*îé ÷*ñòè ÷èñë* èç 10-é â ëþáóþ ññ}
function Drob(d: real; t, c: integer): string;
var
  s: string;
  l2, k, n3: real;
  i, l: integer;
begin
  k := d - int(d);
  s := '';
  i := 0;
  if t <> 0 then  {åñëè òî÷*îñòü *å ð*â** 0 òî ïåðåâîäèì}
  begin
    repeat
      l2 := k * c;
      k := frac(l2); {óì*îæ*åì ÷èñëî ** c (îñ*îâ**èå ÑÑ) áåð¸ì öåëóþ ÷*ñòü è
      ñ*îâ* óì*îæ*åì äðîá*óþ}
      s := s + a[round(int(l2)) + 1]; {èùèì â ñòðîêå ýëåìå*ò ** ïîçèöèè round(int(l2))+1
      (öåë*ÿ ÷*ñòü îò óì*îæå*èÿ ÷èñë* ** c +1)}
      inc(i); {óâåëè÷èâ*åì ñ÷¸ò÷èê}
    until i = t;
  end
  else  {è**÷å}
   s := '0'; {ïðèñâ*èâ*åì s '0'}
  Drob := s;
end;
 
{ôó*êöèÿ äëÿ ïðîâåðêè ìîæåò ëè áûòü ýòî ÷èñëî â ç*ä***îé ñèñòåìå ñ÷èñëå*èÿ}
Function prov(c:integer;s:string):boolean;
Var
 i,kol,j:integer;
begin
kol:=0;
for i:=1 to c do {èä¸ì ïî ñòðîêå * (ãäå ñ-ç*ä****ÿ ñèñòåì* ñ÷èñëå*èÿ)}
begin
 for j:=1 to length(s) do {èä¸ì ïî ñòðîêå s (ç*ä***îìó ÷èñëó)}
 if s[j]=a[i] then {åñëè ñèìâîë **øåãî ÷èñë* ð*âå* ñèìâîëó èç ñòðîêè * òî}
  inc(kol); {óâåëè÷èâ*åì ñ÷¸ò÷èê ** 1}
end;
if kol=length(s) then {åñëè êîë-âî ñèìâîëîâ=äëè*å ñòðîêè (ò.å. âñå ñèìâîëû â ýòîé ÑÑ òî) }
 prov:=true {èñòè**}
else  {è**÷å}
 prov:=false; {ëîæü}
end;
 
{ïåðåâîä (äðîá*îé ÷*ñòè) èç ïðîèçâîëü*îé ññ  â 10-þ}
function drob2(ss: string; c: integer): real;
var
  i: integer;
  sum: real;
begin
  for i := 1 to length(ss) do {èä¸ì ïî ñòðîêå (ïî äðîá*îé ÷*ñòè)}
    sum := sum + (pos(ss[i], a) - 1) * exp(ln(c) * -i); {óì*îæ*åì ïîçèöèþ ñèìâîë* ñòðîêè -1
  ** î*îâ**èå ñèñòåìû ñ÷èñëå*èÿ â ñòåïå*è -i}
  drob2 := sum;
end;
 
begin
  ClrScr;
  repeat
    write('Èç ê*êîé áóäåì ïåðåâîäèòü ññ: ');
    readln(cc2);
    write('Ââåäèòå ÑÑ â êîòîðóþ õîòèòå ïåðåâåñòè: ');
    readln(cc);
  until (cc2 in [2..36]) and (cc in [2..36]); {ïðîâåðê* ââîä*}
  repeat
   write('ââîä ÷èñë* â ', cc2, '-é ÑÑ: ');
   readln(n);
   str(n,s); {ïåðåâîäèì â ñòðîêó}
   Del(s); {ð*çáèâ*åì ** äðîá*óþ è öåëóþ ÷*ñòè ñòðîêó}
   if not prov(cc2,s2) or not prov(cc2,s3) then {åñëè äðîá**ÿ èëè öåë*ÿ ÷*ñòè ç*ä**û *å âåð*î (ò.å. true) òî âûâîäèì ñîîáùå*èå}
    write('Íåêîððåêò*îå ÷èñëî.Ïîâòîðèòå ')
  until prov(cc2,s2) and prov(cc2,s3); {ïðîâåðê* ** ñîîòâåòñòâèå ÷èñë* ç*ä***îé ÑÑ}
  if cc2 = 10 then {åñëè ïåðåâîä èç 10 òî þç*åì ôó*êöèè Cel è Drob}
  begin
    write('Ââåäèòå òî÷*îñòü: ');
    readln(t);
    if ((n - round(int(n))) = 0) then {åñëè äðîá**ÿ ÷*ñòü ÷èñë*=0 òî þç*åì Cel}
      rez := Cel(n, cc)
    else     {è**÷å þç*åì îáå è äîá*âëÿåì , ìåæäó äðîá*îé è öåëîé}
      rez := Cel(n, cc) + ',' + Drob(n, t, cc);
  end
  else {è**÷å åñëè ïåðåâîä *å èç 10-é ÑÑ}
  begin
    if ind = 0 then
      rez := Cel(ToDec(s2, cc2), cc) {ïåðåâîäèì ñ**÷*ë* èç ëþáîé â 10-þ ññ, * ç*òåì èç
     10-é â ëþáóþ}
    else
      rez := Cel(ToDec(s2, cc2), cc) + ',' + drob(drob2(s3, cc2), length(s3), cc); {ïåðåâîäèì èç ëþáîé ññ
      â äðóãóþ }
  end;
  write('×èñëî ',n,'_',cc2,' â ',cc,'-é ñèñòåìå ñ÷èñëå*èÿ:=',rez); { THE END }
  readkey
end.
ABC

P:
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
Uses
 CRT;
 
const
 a: string[36] = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; {   
    }
var
  rez, s, s2, s3: string;
  t, cc, ind, cc2, k: integer;
 
{       }
procedure Del(var ss: string);
var
  i: integer;
begin
  ind := 0;  { }
  s2 := '';
  for i := 1 to length(ss) do  {  }
    if ss[i] in [',', '.'] then {     }
    begin
      ind := i; {  }
      break{ }
    end
    else    {}
      s2 := s2 + ss[i]; {      }
  s3 := '';  { }
  if ind <> 0 then {    [',','.']    }
  begin
    delete(s, 1, ind); {     ind   
    (..   + [',','.'])}
    s3 := ss; {     s3 (..  )}
  end;
end;
 
{   (  )     10-}
function ToDec(var ss: string; cc: byte): string;
var
  i, n, sum: longint;
  s:string;
begin
  sum := 0;  { }
  n := length(ss); { n -   ss}
  for i := 1 to n do {  }
  begin
    dec(n); {   1}
    sum := sum + round((pos(ss[i], a) - 1) * exp(ln(cc) * n)); {  ( 
       -1 (pos(ss[i],a)-1))   dec(n)}
  end;
  str(sum,s); {   }
  ToDec := s;
end;
 
{       10-   }
function Cel(d: string; c: integer): string;
var
  s: string;
  k: integer;
  n2:real;
begin
  val(d,n2,k); {   }
  s := '';   { }
  repeat
    s := ((a[round(n2) mod c + 1]) + s); {         
           + 1      16, 
        s}
    n2 := round(n2) div c;
  until (n2 = 0);
  Cel := s;
end;
 
{       10-   }
function Drob(d: string; t, c: integer): string;
var
  s, l: string;
  l2, m: real;
  i, k: integer;
begin
if pos('E',d)=0 then {    E )
    "0."}
 val(('0.'+d),m,k)
else {}
val(d,m,k); {  (  "0.")  }
  s := '';  { }
  i := 0;
  if t <> 0 then  {    0  }
  begin
    repeat
      l2 := m * c;
      m := frac(l2); {   c ( )    
        }
      s := s + a[round(int(l2)) + 1]; {      round(int(l2))+1
      (      c +1)}
      inc(i); { }
    until i = t;
  end
  else  {}
   s := '0'; { s '0'}
  Drob := s;
end;
 
{           }
Function prov(c:integer;s:string):boolean;
Var
 i,kol,j:integer;
begin
kol:=0; { }
for i:=1 to c do {    ( -  )}
begin
 for j:=1 to length(s) do {   s ( )}
 if s[j]=a[i] then {         }
  inc(kol); {   1}
end;
if kol=length(s) then { - =  (..      ) }
 prov:=true {}
else  {}
 prov:=false; {}
end;
 
{ ( )      10-}
function drob2(ss: string; c: integer): string;
var
  i: integer;
  sum: real;
  s:string;
begin
  for i := 1 to length(ss) do {   (  )}
    sum := sum + (pos(ss[i], a) - 1) * exp(ln(c) * -i); {    -1
        -i}
  str(sum,s); {    }
  drob2 := s;
end;
 
 
begin
  ClrScr;
  repeat
    write('    : ');
    readln(cc2);
    write('     : ');
    readln(cc);
  until (cc2 in [2..36]) and (cc in [2..36]); { }
  repeat
   write('   ', cc2, '- : ');
   readln(s);
   Del(s); {      }
   if not prov(cc2,s2) and not prov(cc2,s3)  then
    write(' . ')
  until prov(cc2,s2) and prov(cc2,s3);
  if cc2 = 10 then {   10    Cel  Drob}
  begin
    write(' : ');
    readln(t);
    if (s3='') then {   =0   Cel}
      rez := Cel(s2, cc)
    else     {     ,    }
      rez := Cel(s2, cc) + ',' + Drob(s3, t, cc);
  end
  else {     10-  }
  begin
    if ind = 0 then
      rez := Cel(ToDec(s2, cc2), cc) {     10- ,   
     10-  }
    else
      rez := Cel(ToDec(s2, cc2), cc) + ',' + drob(drob2(s3, cc2), length(s3), cc); {   
        }
  end;
  write(' ',s,'_',cc2,'  ',cc,'-  :=',rez); { THE END }
  readkey
end.
AdAgent
06.02.2011, 22:42    
Oleskon
1 / 1 / 0
: 10.01.2014
: 19
09.09.2014, 05:53       #41
SuPeR XaKer
s := ((a[n2 mod c + 1]) + s); { + 1 16, s}
, , ?!
Puporev
45810 / 34034 / 4299
: 18.05.2008
: 74,267
09.09.2014, 07:04       #42
1, 0.
a[1]='0', 0
1 div 2=0 1, a[1]
Yandex
09.09.2014, 07:04    
.

: 08:15. GMT +3.
- , ,
- -
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2015, vBulletin Solutions, Inc.
.