1. Си / Говнокод #19271

    −107

    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
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    //------------------
    #define _rayaNumberToString(number, TNumber) \
    rayaInt32 digitsCount = 0, strSize; \
    TNumber digitsCountNum = RAYA_ABS(number); \
    while(digitsCountNum > 0){ digitsCount++; digitsCountNum/=10; }; \
    \
    strSize = digitsCount + (number<=0); \
    rayaString str = {malloc(sizeof(rayaCharCode)*strSize+1), strSize}; \
    str.chars[str.size]='\0'; \
    if(number < 0) str.chars[0]='-'; \
    if(number == 0) str.chars[0]='0'; \
    \
    rayaInt32 start = str.size-digitsCount; \
    rayaInt64 numberX = RAYA_ABS(number); \
    for(int i=str.size-1; i >= start; i--) { \
    str.chars[i] = '0' + RAYA_ABS(numberX-((numberX/10)*10)); \
    numberX /= 10; \
    }; \
    return str; \
    
    rayaString _rayaRemoveExcessZeroes(rayaString str) {
    
    int newStart = 0;
    int indexStart = (str.chars[0]=='-' || str.chars[0]=='+');
    for(int i = indexStart; i < str.size; i++) {
    if(str.chars[i] != '0'){ newStart = i; break; }
    }
    
    rayaInt32 newSize = str.size - newStart;
    rayaString newStr ;
    newStr.chars = malloc( sizeof(rayaCharCode)*(newSize+1) );
    newStr.size = newSize;
    newStr.chars[newSize] = '\0';
    
    int newIndex = 0;
    for(int i = newStart; i < str.size; i++) {
    newStr.chars[i-newStart] = str.chars[i];
    newIndex++;
    }
    return newStr;
    };
    
    rayaString _rayaIntToString(rayaInt64 num) {
    _rayaNumberToString(num,rayaInt64);
    };

    Запостил: d_fomenok, 29 Декабря 2015

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

    • > newStr
      Мне кажется, или каждый, кто пишет на си(++), должен хоть раз в жизни назвать переменную таким образом?
      Ответить
    • Кто такая Рая, в честь которой назван неймспейс этого замечательного кода?
      Ответить
      • Раиса произвела на автора настолько большое впечатление, что запала ему не только в сердце, но и даже в код...
        Ответить

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