К списку форумов К списку вопросов
Задачка для программиста...))
Gthley
14.10.2004 - 17:33
Существует четырехзначное число.. Ну например 1234, как преобразовать его в 4321 ?!Что-то вроде такого XYZH -> HZYX
Phoenix
1 - 14.10.2004 - 17:49
на каком языке программирования для начала? или тебе тока алгоритм?
Nickless
2 - 14.10.2004 - 17:54
y := (x mod 10)*1000 + ((x div 10)mod(10))*100 + ((x div 100)mod 10)*10 + (x div 1000)
что-то типа этого
Gthley
3 - 14.10.2004 - 18:01
Phoenix
В принципе можно и на дельфе...Но тада мона и алгоритм..
На любом...
Gthley
4 - 14.10.2004 - 18:02
Nickless, спасибо...!
siapk
5 - 15.10.2004 - 12:25
Для 2 - Удобнее работать не с числом, а со строкой.... потом преобразовать в число ...
Phoenix
6 - 15.10.2004 - 12:37
ileight := leight(str);
for i := 0 to ileight do begin
   sStr := Copy(S,ileight-i,1);
   s := s + Str
end;
код не проверял, написал на вскидку
Программист
7 - 15.10.2004 - 12:39
Это задачка для студентов-балбесов, а не для программиста!
Grim Ghost
8 - 15.10.2004 - 13:48
Без всяких преобразований...
while (a<>0) loop
   c := mod(a,10);
   n := n*10 + c;
   a := (a - c)/10;
end loop;
VaS
9 - 15.10.2004 - 14:23
...и в результате мусор на выходе
Grim Ghost
10 - 15.10.2004 - 14:59
Почему мусор? У меня все работает, результат хранится в переменной n.
Grim Ghost
11 - 15.10.2004 - 15:01
Вот весь код.
declare
    a integer := 123456789;
    b integer := 10;
    c integer;
    n integer := 0;
begin
    while (a<>0) loop
        c := mod(a,10);
        n := n*10 + c;
        a := (a - c)/10;
    end loop;
    dbms_output.put_line(n);
end;
Быстрый Шу
12 - 15.10.2004 - 15:19
Чё то не понял проблемы...
 s:='1234';
 for i:=length(s) downto 1 do
  begin
   rez:=rez+s[i];
  end;
если на входе/выходе число, то отконвертить его в строку...
зы
13 - 15.10.2004 - 15:37
одной строчкой это делается...
a:=(a div 1000)+((a mod 1000) div 100)*10+((a mod 100)div 10)*100+((a mod 10)*1000)
Grim Ghost
14 - 15.10.2004 - 16:19
Ну, если заточка устроит, тогда одной.
VaS
15 - 15.10.2004 - 16:47
11: Без строчки n integer := 0; был мусор :)
tyvik
16 - 15.10.2004 - 17:27
делается это через стек
 mov ax,zn
 mov bx,0Ah
 xor cx,cx
 exitp:
 xor dx,dx
 div bx
 push dx
 cmp ax,0
 je print
 inc cx
 jmp exitp
 print:
 inc cx
 и через loop получаем в обратном порядке
Nickless
17 - 15.10.2004 - 17:35
ну кто в бинарниках напишет?:)
tyvik
18 - 15.10.2004 - 17:37
если тебя не устраевает асм, то можешь заточить под твой любимый паскаль, но так будет быстрее
(личные разборки: зайди в аську *******)
Gthley
19 - 15.10.2004 - 17:45
Всем большое спасибо!
Опоздавший
20 - 15.10.2004 - 22:05
А можно сделать красивый рекурсивный алгоритм...
Но чувствую уже никому не будет интересно...
saniok
21 - 15.10.2004 - 23:04
А можно так:
  i := 1024;
  s := str(i);
  s := s[4]+s[3]+s[2]+s[1];
  i := IntToStr(s);
saniok
22 - 15.10.2004 - 23:07
Извиняюсь, башка уже не варит:
  i := 1024;
  s := IntToStr(i); // ;-)
  s := s[4]+s[3]+s[2]+s[1];
  i := StrToInt(s); // ;-)

К списку вопросов на форуме Программирование

>>