1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
перевод из 10 с.с. в троичную уравновешенную, можно ли короче это сделать?
это программка перевода из десятичной системы счисления в троичную уравновешенную, но меня смущает её размер. можно ли её реализовать другим путём, чтобы она занимала меньше строк? мне кажется, она должна быть меньше, но я не допираю, куда ещё меньше.
uses crt; const n = 18; procedure converter(var out:string;x:longint); var str3,d: array [1..n] of longint; i:integer; s:longint; begin clrscr; (*Вычисление str3 и d*) str3[1]:=1; d[1]:=1; s:=1; for i:=2 to n do begin str3[i]:=str3[i-1]*3; d[i]:=s+1; s:=s+str3[i]; end; for i:=n downto 1 do begin if abs(x)>=d[i] then if x>0 then begin out:=out+'1'; x:=x-s3[i]; end else begin out:=out+'-1'; x:=x+str3[i]; end else out:= out+'0'; end; end;
var str: string; i:integer; x: longint; begin clrscr; writeln('Введите целое число в десятичной системе счисления [-193710244..193710244]'); readln(x); if (x<-193710244) or (x>193710244) then begin writeln ('Error'); readln; halt; end; converter(str,x); writeln('Число в троичной уравновешенной системе счисления: ', str); readln; end.