Цитата(/7popok @ 11.02.2007 20:27)

до этого не смотрел, но тем не менее тот вариант не работает с отрицательными десятичными числами.
а мой работает. просто подскажите, можно ли его как-нибудь ещё укоротить.
Цитата
изменение знака числа на противоположный осуществляется простой заменой всех 1 на 1 и наоборот
тот же код, что привёл volvo, но добавлена проверка на отрицательность.
Код
var
n, ost: integer;
s: string;
plus: string;
plusminus: string;
begin
write('n = '); readln(n);
if n >= 0 then begin
plus := '+';
plusminus := '+-';
end else begin
plus := '-';
plusminus := '-+';
n := -n;
end;
s := '';
while n >= 3 do begin
ost := n mod 3;
case ost of
0: s := '0' + s;
1: s := plus + s;
2: s := plusminus + s;
end;
n := n div 3;
end;
case n of
0: s := '0' + s;
1: s := plus + s;
2: s := plusminus + s;
end;
writeln('s(3) = ', s);
end.