1. Pascal / Говнокод #15488

    +87

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    delim:=0;
    result:='';
    resulttemp:='';
    otv1:=trunc(rez);
    ott2:=rez-otv1;
    while otv1>=s1 do
    begin
    	delim:=delim+1;
    	r1:=otv1 div s1;
    	r2:=otv1 mod s1;
    	otv1:=r1;		
    	if (r2>=0) and (r2<=9) then
    		str(r2,resulttemp);			
    	if r2=10 then resulttemp:='a';
    	if r2=11 then resulttemp:='b';
    	if r2=12 then resulttemp:='c';
    	if r2=13 then resulttemp:='d';
    	if r2=14 then resulttemp:='e';
    	if r2=15 then resulttemp:='f';		
    	result:=result+resulttemp;
    end;	
    if (otv1>=0) and (otv1<=9) then
    	str(otv1,resulttemp);	
    if otv1=10 then resulttemp:='a';
    if otv1=11 then resulttemp:='b';
    if otv1=12 then resulttemp:='c';
    if otv1=13 then resulttemp:='d';
    if otv1=14 then resulttemp:='e';
    if otv1=15 then resulttemp:='f';	
    result:=result+resulttemp;
    delim:=length(result);
    resulttemp:=result;
    for otv1:=1 to delim do
    	result[otv1]:=resulttemp[delim+1-otv1];

    Перевод числа из десятичной системы счисления в систему счисления с основанием s1

    Запостил: n924, 15 Марта 2014

    Комментарии (7) RSS

    • Циклы с постусловиями??? Коды символов??? Нет, не слышал... А уж инверсия строки в конце...

      repeat
      r2:=otv1 mod s1;
      if r2<10 then
      result:=chr(ord('0')+r2)+result
      else
      result:=chr(ord('a')-10+r2)+result;
      otv1:=otv1 div s1
      until otv1=0;
      Ответить
      • Вообще можно из VCL вытащить асмооптимизированную функцию для этого (CvtInt\CvtInt64). Она используется в IntToStr и IntToHex, но работает и для других оснований.
        Ответить
        • Раздел называется "Pascal", в исходном сообщении нет ни слова о Delphi. Откуда возьмется VCL?
          Ответить
          • result вроде бы в делфи впервые появился. раньше имя функции писали.
            Ответить
            • И имени функции можно было только присвоить значение. Вирт явно переборщил с минимализмом.

              Но в данном случае result может быть и явно объявленной переменной, и формальным параметром...
              Ответить
            • result[otv1] вот так нельзя было
              Ответить
          • А и правда, str вместо IntToStr. Ну, если это лаба на турбопаскале или проект под какой-то ускоспецифичный диалект, то VCL (точнее RTL, я перепутал) не прокатит.
            Ответить

    Добавить комментарий