Top.Mail.Ru
Ответы
Аватар пользователя
6лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Пишу программу на Delphi про перевод систем счисления, есть проблема...

Есть такой код (здесь я ввожу число в 10 системе и он мне выводит его в двоичной, в ABC паскале всё работает идеально, но....)
procedure Re ( n : integer);
begin
if n > 1 then Re( n div 2);
Write( n mod 2 );
end;

var
n : integer;

begin
Write('Введите число : ');
readln(n);

Re(n);
readln;
end.

Я делаю прогу в Лазарусе, на форму поместил Edit1 и Edit2. В Edit1 ввожу число в 10 системе, а в Edit2 после нажатия на кнопку должен получить его же, но в двоичной.
Проблема заключается в том, что я не могу вывести значение рекурсии ( Re(n) ) в поле Edit2. Не могу понять как вывести значение....

Дополнен

Если в ABC паскале достаточно было прокто написать Re(n), то здесь так тупо не получается... выдаёт как за ошибку.

По дате
По рейтингу
Аватар пользователя
Новичок
6лет

>Write( n mod 2 );
>Я делаю прогу в Лазарусе, на форму поместил
Если у тебя там форма, то с какого ж перепуга ты делаешь Write?
Пиши рекуррентную функцию, если ты такой фанат рекурсии.

function Re ( n : integer):string;
begin
if n > 1 then Result:=Re( n shr 1)+IntToStr(n and 1)
else
Result:=IntToStr(n and 1);
end;

Аватар пользователя
Искусственный Интеллект
6лет

Ну так добавь процедуре еще аргумент - указатель на string, и к переданной строке конкатенируй эти циферки, вместо Write()... а когда процедура завершается, значение этой строки запихивай в Edit2.Text
В чем проблема-то?