program prg;
function ChangeDigits(a: integer): integer;
var t, r, dgs: integer;
neg: boolean;
begin
if a < 0 then begin neg := true; a := -a; end // убираем знак
else neg := false;
t := 0;
dgs := 1; // разряды числа
r := a;
while true do begin // делим до первой цифры
r := r div 10;
if r = 0 then break;
t := r mod 10; // будет последней цифрой
dgs := dgs * 10;
end;
// переписываем все цифры, кроме последней
r := (a mod 10) * dgs; // старшая цифра нового числа
dgs := dgs div 10;
while dgs > 1 do begin
r := r + ((a div dgs) mod 10) * dgs;
dgs := dgs div 10;
end;
r := r + t; // последнюю цифру
if neg then r := -r; // возвращаем знак
ChangeDigits := r;
end;
var a, b: integer;
begin
readln(a);
b := ChangeDigits(a);
writeln(b);
end.
Соколов МаксимМастер (1758)
7 лет назад
Как вариант, можно и в вашем коде лишь дописать код, убирающий знак, и всё, что далее выполнить для положительного числа.
program Change;
var s1, s2, s, k, n, i: Integer;
begin
Readln(n);
if n<0 then begin write('-'); n:=-n end;
If n<=9 then writeln(n)
Else begin
k:=n;
i:=1;
while k<>0 do begin
k:=k div 10;
i:=i*10;
end;
i:=i div 10;
s2:= n div i;
s1:= n mod 10;
s:= (n mod i) div 10;
n:=s1*i + s2 + s*10;
If s1=0 then writeln('0',n) else writeln(n)
End;
end.
Написать нужно прогу на паскале, чтоб можно было менять местами цифры и отрицательные и положительные.