1. C++ / Говнокод #2210

    +922

    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
    int proverka_na_chislo(string str){
      int l=0;
      for(unsigned int i=0; i<str.length();i++) {
       if(str.compare(i,i+1,"0")!=0){
         if(str.compare(i,i+1,"1")!=0){
           if(str.compare(i,i+1,"2")!=0){
             if(str.compare(i,i+1,"3")!=0){
               if(str.compare(i,i+1,"4")!=0){
                 if(str.compare(i,i+1,"5")!=0){
                   if(str.compare(i,i+1,"6")!=0){
                     if(str.compare(i,i+1,"7")!=0){
                       if(str.compare(i,i+1,"8")!=0){
                          if(str.compare(i,i+1,"9")!=0){
                            throw std::invalid_argument("invalid argument\n");
                            l=-1;
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
      return l;
    }

    Проверка на число.

    Запостил: LocalStorm, 03 Декабря 2009

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

    • OMG
      Ответить
    • такой баян шо аж пиздец
      Ответить
    • наверное, автор хотел намекнуть, что иф-цепочка ещё куда не шла, но вот название функции удручает: proverka_na_chislo :D ппц, правда? :D
      Ответить
      • Я чувствую я лишил тебя покоя этим кусочком говнокода )
        Ответить
    • bool isValidNumber(wchar_t* ws)
      {
      int i; wchar_t c;
      for(i = 0, c = ws[0]; c != L'\0'; i++, c = ws[i])
      {
      if(c < '0' || c > '9')
      return false;
      }
      return i;
      }

      С++ -- для тупого быдла.
      Ответить
      • а так не сработает?

        for (wchar_t* c = ws; *c != L'\0'; c++)
        {
        if (*c < '0' || *c > '9')
        return false;
        }
        return true;
        Ответить
      • какой ты умный ^__________^
        Ответить
      • Тогда уж локалями озаботиться, чтобы вообще претензий не было!
        Ответить
      • while(s[i]) if (!isdigit(s[i++])) return false;
        return true;


        Вот вас написать пбольше то тянет.
        Ответить
    • "Помни, guest, за тобой могут следить!"
      Я вас навчу как батьке херню писать!
      Ответить
    • Бажен, жжёщь:)
      Ответить
    • в рядок так.. как будто военные писали
      Ответить
    • proverka_na_slovo() наверно повеселей будет выглядеть)))
      Ответить
    • Вообще жесть.
      Исключение тут нафиг не нужно, смысл функции теряется полностью.
      десятикратный compare для каждого символа - вообще без коментариев.
      Плюс функция не будет работать на отрицательных и вещественных числах.
      Ответить
    • Ха!
      Я использовал sscanf("%d%c",&n,&c)==1
      Ответить
      • Похоже это самый краткий способ.
        Обьясни как это работает?
        Ответить
        • Я так понял, что sscanf читает "число", кстати, и float если надо, -- пока может. Попадается левый символ -- кладет во второй указатель и возвращает 2. Я это дело прям на апдейте редактора прописал, только что-то с первым минусом понадобилось.
          Ответить
      • sscanf разве возращает какое-либо значение?
        Ответить
        • ...return the number of input items successfully matched and assigned...
          Ответить
    • Есть такая функция в стандартной библиотеке С isdigit()
      Ответить

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