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

Модераторы: Duncon, Naeel Maqsudov, Хыиуду, Игорь Акопян

Drawn
Сообщения: 5
Зарегистрирован: 07 ноя 2004, 20:39
Контактная информация:

07 ноя 2004, 20:42

Люди добрые, помогите кто чем может: Нужно написать программу для перевода чисел из одной системы счисления в другую на Delphi.
GOS
Сообщения: 111
Зарегистрирован: 17 фев 2004, 10:32
Контактная информация:

07 ноя 2004, 23:14

Если нужно помочь,
то: из какой в какую?
Если нужно написать за Вас, то "Спасибо не булькает :) ".
Drawn
Сообщения: 5
Зарегистрирован: 07 ноя 2004, 20:39
Контактная информация:

07 ноя 2004, 23:54

Из любой системы счисения в любую, у меня есть алгоритм, только не получается
это в Delphi оформить...
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

08 ноя 2004, 19:37

Считаю, тему нужно переместить в раздел "Решите мне задачку".
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

09 ноя 2004, 07:37

Тема была совешенно обычной, ее GOS повернул в это русло.
Drawn, публикуйте Ваш алгоритм и то, что у Вас не получилось. Будем разбирать ошибки.
Drawn
Сообщения: 5
Зарегистрирован: 07 ноя 2004, 20:39
Контактная информация:

09 ноя 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:=upcase(s);
j:=-1;
repeat
inc(j);
until (j=36) or (s=chars[j]);
if j=36 then begin writeln('ne verno vvedeno chislo .... '); exit; end;
Chis:=Chis*k+j;
end;
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

10 ноя 2004, 10:26

Как я понял проблема с input и o output. Для input стоит использовать элемент управления edit box. Output можно сделать с помощью функции MessageBox, либо через ещё один edit box.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

12 ноя 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
Сообщения: 5
Зарегистрирован: 07 ноя 2004, 20:39
Контактная информация:

16 ноя 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
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

17 ноя 2004, 11:32

Странный вопрос. Так: Degree(5, 2), результат будет 25 :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить