PDA

Просмотр полной версии : Нужна помощь в переводе чисел в другую систему счисления



Drawn
07.11.2004, 20:42
Люди добрые, помогите кто чем может: Нужно написать программу для перевода чисел из одной системы счисления в другую на Delphi.

GOS
07.11.2004, 23:14
Если нужно помочь,
то: из какой в какую?
Если нужно написать за Вас, то "Спасибо не булькает:) ".

Drawn
07.11.2004, 23:54
Из любой системы счисения в любую, у меня есть алгоритм, только не получается
это в Delphi оформить...

Romeo
08.11.2004, 19:37
Считаю, тему нужно переместить в раздел "Решите мне задачку".

Naeel Maqsudov
09.11.2004, 07:37
Тема была совешенно обычной, ее GOS повернул в это русло.
Drawn, публикуйте Ваш алгоритм и то, что у Вас не получилось. Будем разбирать ошибки.

Drawn
09.11.2004, 19:15
Как эти строчки будут выглядеть в Delphi?

const
chars: array[0..35] of char = ('0','1','2','3','4','5','6','7','8','9','A','B',' C','D','E','F','G','H','I','J','K',
'L','M','N','O','P','Q','R','S','T','U','V','W','X ','Y','Z');

и

write('Vvedite ishodnoe chislo: '); readln(s);
write('k= '); readln(k);

chis:=0;
for i:=1 to length(s) do begin
s[i]:=upcase(s[i]);
j:=-1;
repeat
inc(j);
until (j=36) or (s[i]=chars[j]);
if j=36 then begin writeln('ne verno vvedeno chislo .... '); exit; end;
Chis:=Chis*k+j;
end;

Romeo
10.11.2004, 10:26
Как я понял проблема с input и o output. Для input стоит использовать элемент управления edit box. Output можно сделать с помощью функции MessageBox, либо через ещё один edit box.

Naeel Maqsudov
12.11.2004, 00:20
Можно обойтись без GUI.
Все что нужно добавить - это {$APPTYPE CONSOLE}
Вот полный текст Project1.dpr (единственного исходного файла приложения)



program Project1;
{$APPTYPE CONSOLE}
const
chars: array[0..35] of char = ('0','1','2','3','4','5','6','7','8','9','A','B',' C','D','E','F','G','H','I','J','K',
'L','M','N','O','P','Q','R','S','T','U','V','W','X ','Y','Z');
var
s:string; chis,k,i,j:integer;
begin
// Insert user code here
write('Vvedite ishodnoe chislo: '); readln(s);
write('k= '); readln(k);

chis:=0;
for i:=1 to length(s) do begin
s[i]:=upcase(s[i]);
j:=-1;
repeat
inc(j);
until (j=36) or (s[i]=chars[j]);
if j=36 then begin writeln('ne verno vvedeno chislo .... '); exit; end;
Chis:=Chis*k+j;
end;
writeln(Chis);
readln;
end.

Drawn
16.11.2004, 21:59
Возник еще один вопрос, как данную функцию использовать в программе?

Function Degree(Num:Real; Deg:Integer):Real;
Var I:Integer;
D:Real;
Begin
D:=1;
IF Deg<0 Then For I:=1 to Abs(Deg) Do D:=D/Num
Else For I:=1 to Deg Do D:=D*Num;
Degree:=D
End;

Romeo
17.11.2004, 11:32
Странный вопрос. Так: Degree(5, 2), результат будет 25 :)

drmist
17.11.2004, 15:59
допустим, тебе надо присвоить переменной a результат этой функци:

var a:real;
[...]
begin
[...]
a:=degree(5,2);
[...]

теперь а равно 25.