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

    +143

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    function CopyEx(s:string; index,count:integer):string;
    var
      len,ln:integer;
    begin
      ln:=0;
      if index <1 then index:=1;
      len:=length(s);
      ln:=len-count;
      dec(ln);
      dec(len,(index+ln));
      result:=copy(s,index,len);
    end;

    Запостил: Stertor, 04 Мая 2015

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

    • Ещё один пост улетел... Печалька.
      Ответить
    • >>CopyEx

      Копец?)
      Ответить
    • Запутанно как-то получилось...
      // раскроем dec()
      len := length(s);
      ln := len - count - 1;
      len := len - (index + ln);
      // упростим выражение для len
      ln := length(s) - count - 1
      len := length(s) - (index + length(s) - count - 1)
      // еще упростим
      len := length(s) - index - length(s) + count + 1
      // сократим длину строки
      len := count - index + 1
      // и наконец
      result := copy(s, index, count - index + 1)
      А index и count, наверное, стоит переименовать в first и last.
      Ответить
      • Т.е. как-то так, если я правильно понял назначение функции:
        function CopyEx(s : string; first, last : integer) : string;
        begin
          if first < 1 then
              first := 1;
          result := copy(s, first, last - first + 1);
        end;
        
        CopyEx("Хуй, Пизда и Джигурда", 1, 3); // "Хуй"
        CopyEx("Хуй, Пизда и Джигурда", 6, 10); // "Пизда"
        Ответить

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