Кресты / Говнокод #24055 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
bool kiemtraso(std::string &a,int i)
{
    char N[4];
 /*   N[0]=a[i+0];
    N[1]=a[i+1];
    N[2]=a[i+2];*/
    for(int n=0;n<3;n++)
    {
        N[n]=a[i+n];
    }
    if(atoi(N)>255) return 0;
    return 1;
}
bool isIPv4Address(std::string inputString) 
{
    int n=inputString.length();
    //3 dau cham=====================================гугл перевел: "3 часа ночи"
    int dem=0;
    for(int i=0;i<n;i++)
    {
        if(inputString[i]==46) dem++;
    }
    if(dem!=3) return 0;
    
    //co hon mot ki tu==============================
    if(inputString[0]==46||inputString[n-1]==46) return 0; //ki tu dau va cuoi khac dau cham
    for(int i=1;i<inputString.length()-1;i++)
    {
        if(inputString[i]==46 && inputString[i+1] == 46) return 0;
    }
    
    //khong co chu cai=========================================
    for(int i=0 ; i<n ; i++)
    {
        if (inputString[i]==47||inputString[i]<46||inputString[i]>57) return 0;
    }
    //2 so o giua nho hon 255===========================================
    int sokitu;
    for(int i=0; i<n-1 ; i++)
    {
        if(inputString[i]==46)
        {
            for(int j=i+1 ; j < n ; j++)
            {
                if(inputString[j]==46) 
                {
                    sokitu = j-i-1;
                    if(sokitu==3&&kiemtraso(inputString,i+1)==0) return 0;
                    if(sokitu>3) return 0;
                    break;
                }
            }
            i++;
            continue;
        }
    }
    //so dau nho hon 255 =====================================
    int kitudau;
    int m=0;
    for(int i=0;i<n;i++)
    {
        if(inputString[i]==46)
        {
            if (i==3 && kiemtraso(inputString,m)==0) return 0;
            if (i>3) return 0;
            break;
        }
    }
    //so cuoi nho hon 255=======================================
    for(int i=inputString.length()-1;i>0;i--)
    {
        if(inputString[i]==46)
        {
            if(inputString.length()-i-1==3 && kiemtraso(inputString,i+1)==0) return 0;
            if (inputString.length()-i-1 > 3) return 0;
            break;
        }
    }
    return 1;
}

Проверяет, является ли введенная строка IP адресом.
Не мое
решение одного, судя по всему, вьетнамца.
Я пока не очень силен в алгоритмах, может это типа нормально, подскажите.

Запостил: noserdan noserdan, (Updated )

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

  • аааа
    какие ночи, гугл, "точки" же) не догнал сразу
    Ответить
  • > может это типа нормально
    Ну, за исключением UB'а в kiemtraso оно даже должно работать на привычной всем форме IPv4 адресов (извращения в духе 0x7F000001 или 0177.1 мало кому интересны, хоть и допустимы)…
    Ответить
  • Чето я подвозбудился от этого кода - надо будет сегодня вечерком наговнять свой велосипедик и выложить.
    Ответить
    • Пиши полную версию тогда, которая всякие 0177.1 и 0x7F.0.1 понимает.
      Ответить

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8