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

    +148.7

    1. 1
    2. 2
    #define IsVowel(symb) (((symb == 'a') || (symb == 'e') || (symb == 'i') || (symb == 'o') || (symb == 'y') || (symb == 'u') || (symb == 'A') || (symb == 'E') || (symb == 'E') || (symb == 'I') || (symb == 'O') || (symb == 'U')) ? 1 : 0)
    #define IsGood(word) (((!IsVowel(word[0])) && (IsVowel(word[strlen(word) - 1]))) ? 1 : 0)

    Необходимо вывести в алфавитном порядке те слова, первая буква которых является согласной, а последняя гласной.
    Как говорится, лучше проще и понятнее, чем умнее.

    Запостил: guest, 17 Марта 2009

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

    • Kirikaza:
      А теперь представим
      IsVowel(chr++)
      и
      IsVowel(chr ^ BIT_MASK)
      .
      Ну и шедевр:
      char *ss = ...;
      for (...) { if (IsGood(NextWord(ss)); }

      Теперь NextGood вызовется в макросе либо 1 раз, либо 3 -- как повезёт ;) При этом если 3й вызов даст строку длиннее, чем 2й, то полный UB.
      Ответить
    • Да, лучше использовать inline методы
      Ответить

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