Помощь - Поиск - Пользователи - Календарь
Полная версия: Порядок цифр в числе
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Mr.Fury
Помогите! Please! Никак не могу решить задачу :
Надо изменить порядок цифр в числе на обратный. Например:7658 на 8567!
ПОМОГИТЕ!!! PLEASE!!! ??? ???
GLuk
Дык значит решать пробовал? Покажи, что смог сделать.
Какими ф-ми/процедурами собираешься пользоваться?
Mr.Fury
Пробовал. Хочу использовать операторы цикла (WHILE и FOR).
Я посчитал кол-во цифр в числе.
Тут надо наверное как-то число разбить на цифры (отдельные переменные для
каждой цифры).Но никак у меня не получается! ??? :-[
fms
можно делить на 10 брать целую часть вычитать из нецелого целое и умножать на 10. выводить полученную цифру и так далее.. пока не дойдешь до 1-ой цифры.

вроде так..
APAL
А почему бы не преобразовать число в строку, поменять порядок символов и преобразовать обратно в число?
Mr.Fury
fms,а как быть если число очень-много-значное?
Значит надо использовать оператор цикла.
Как бы сделать так, чтобы каждая цифра присваивалась своей переменной ?
??? ??? ??? ???
APAL
Код

Var
 K : LongInt;

Function SwapNum(nn : LongInt) : LongInt;
Var S,Sres   : String;
   Result   : LongInt;
   i        : Byte;
   Code     : Integer;
Begin
  If nn<10 then
  Begin
    SwapNum:=nn;
    Exit;
  End;
  Str(NN,S);
  Sres:=S;
  For i:=1 to Length(S) do Sres[Length(S)-i+1]:=S[i];
  Val(Sres,Result,Code);
  If Code=0 then SwapNum:=Result else SwapNum:=0;
End;

Begin
 Write('Введите число: ');Readln(k);
 Write('Результат    : ',SwapNum(k));
End.
Mr.Fury
Спасибо APAL ,но мне надо сделать это используя оператор WHILE.
fms
Цитата
fms,а как быть если число очень-много-значное?
Значит надо использовать оператор цикла.
Как бы сделать так, чтобы каждая цифра присваивалась своей переменной ?
??? ??? ??? ???


а какая разница?! очень многозначное или не очень? ты просто в цикле сделай деление на 10 и все. а если ты сделаешь чтобы цифра да еще и своей переменной то там вообще свихнуться можно.. по моему..
trminator
Народ, вы о чем? Какие строки? Если число неотрицательное, то вот решение
Код

program forforum;
var a, b: integer;
begin readLn(a); b:=0;
 while a<>0 do begin
   b:=b*10+a mod 10;
   a:=a div 10
 end;
 writeLn(b)
end.
Kolan
Можно сделать используя стек. Преобразовать число в строку и потом создать список и заполнить его спереди и получиться наоборот ;)
trminator
Цитата
Можно сделать используя стек. Преобразовать число в строку и потом создать список и заполнить его спереди и получиться наоборот ;)

Да, это видимо будет намного быстрее и проще, чем один-единственный оператор цикла. А насколько меньше потребуется памяти...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.