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

    +160

    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
    void check( const elemType eps = std::numeric_limits<elemType>::epsilon() ){
          count = 4;
          int isAB=0, isAC=0, isAD=0, isBC=0, isBD=0, isCD=0;
          if(A==B) isAB = 1;
          if(A==C) isAC = 1;
          if(A==D) isAD = 1;
          if(B==C) isBC = 1;
          if(B==D) isBD = 1;
          if(C==D) isCD = 1;
          if(isAB) {B=C;C=D;--count;}
          if(isAC) {C=D;--count;}
          if(isAD) {--count;}
          if(isBC) {C=D;--count;}
          if(isBD) {--count;}
          if(isCD) {--count;}
          if(count<3){std::cerr <<"Warning: Bad Frame.\n";}
       }

    Есть структура. В ней четыре поля. Два любых поля могут совпадать, могут не совпадать. Если два поля совпадают, то лишнее нужно удалить и установить счетчик в 3. Если больше двух полей совпадают сообщить об ошибке. Как это попроще (покрасивше) это сделать в стиле cpp?

    Запостил: blackhearted, 15 Июня 2010

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

    • это пипец
      Ответить
    • Помоему неплохо. Лучше не сделаешь ни на каком языке. Суровые реалии жизни. Разве что по массивам это распихать.
      Ответить
      • ты пониёб? какие тут нафиг массивы?!
        Ответить
        • ты пидорас? A, B, C и тд запихнуть в один массив и алгоритм выльется в пару строчек.
          Ответить
          • а ты гомофоб?
            Ответить
            • про себя смолчу, а вот ты или умственно отсталый(раз говоришь об этом в каждом треде как тараторка) или имеешь гомосексуальные наклонности(все время думаешь об этой своей проблеме и проецируешь на других)
              Ответить
              • Иметь гомосексуальные наклонности это плохо?
                Ответить
                • А в чём разница между гомосексуальными наклонностями и гомосексуальными склонностями?
                  Ответить
                  • Ты школота пришел сюда про своих дружков-пидарков обсуждать?
                    Пиздуй на двач блин, нефига тут тролей плодить.
                    Тут люди про компьютеры разговаривают.
                    Ответить
                    • Вспомнился анекдот весьма старый, сейчас его уже не понимают:)

                      Пpогpаммеpы квасят на пpиpоде. Идут pазговоpы, тpали-вали...
                      Один pассказывает:
                      - Познакомился тут с девушкой на дискотеке! Бесподобная деваха!
                      И фигуpка, и мозги есть, и танцует хоpошо! Так вот, pешил pickup'нуть ее к себе домой. Пpигласил, она согласилась. Пpишли, выпили винца, поговоpили о том, о сем, музыку послушали. Потом я ее поцеловал, пpиподнял аккуpатно, посадил задницей на клавиатуpу, поднял юбку...
                      Остальные:
                      - Так у тебя контупеp дома стоит?!?! А какой???
                      Ответить
                      • Да уж знаете, лучше я послушаю про компьютеры, чем про гомосексуальные похождения вебкилла... Превратил сайт в черте-что... клоун
                        Ответить
                      • >Пpогpаммеpы квасят на пpиpоде.
                        Программеры висят на говнокоде.
                        Ответить
                      • :D))))))))))) Ну ты дал. Класная шутка. Спасибо. :)
                        Ответить
                        • А я подрочил, мне понравилось
                          Ответить
                          • купи плейбой. там так же, только дольше и без компьютера.
                            Ответить
                            • в компьютере можно заценить как японки например ссут друг другу в рот, а в плейбое скукота
                              Ответить
    • Складывается устойчивое впечатление что автор написал задание, которое ему задали и хочет чтобы ему его тут решили.
      Ответить
      • сху*ли бы?
        я этот шедевр на rsdn увидел. И никакого мне решения нахрен не нужно.
        Ответить
    • >Как это попроще (покрасивше) это сделать в стиле cpp?

      разгоняешься и в стену
      ты спалился, урсус
      Ответить
      • Эт кто такой?
        Ответить
        • нет нет, отмазы не принимаются
          Ответить
          • блин, ну не томи!
            расскажи кто это!

            вот оригинал
            http://rsdn.ru/forum/cpp/3842077.1.aspx
            Ответить
            • Мистер Эпик Фейл
              подробности тут http://www.govnokod.ru/3130
              Ответить
              • толстый ты дядя, очень толстый...
                Ответить
                • щито? и это я слышу от личинки насравшей на правила гк.
                  Ответить
                  • правила гк? не смеши
                    Ответить
                    • некрасиво здесь постить код, который является бояном... уверен что большинство здесь сидит на рсдн, и уже обосрали этот код там...
                      Ответить
                      • сам сри на своем рсдн, а тут нечего.
                        Ответить
                      • Не могу, сука, передать, как меня, блять, бесят люди, которые пишут в форумы, блоги, каменты и почту слово "Баян!".

                        Ну отлично, молодец, знаешь ты этот анекдот, видел ты эту картинку, знаком с этим сайтом, успел с утра прочесть новость - ну и сиди, блять, и не пизди, дай другим людям понаслаждаться.

                        Приходят, блять, в каменты и гордо печатают: "Баянищще!" или "Да этому сто лет уже". Ну и хуй с ним. Да хоть, сука, триста.

                        Эти пидарасы являются идеальными одноразовыми потребителями. С утра увидели что-то, посмотрели, а к обеду любая ссылка на это что-то уже считается баяном. Чтоб у вас клавиатуры сгорели, уебаны!

                        Самое главное, что многие, кто дал на что-нибудь ссылку, и кому тут же в каменты насыпали "баян, баян", замыкаются и впредь боятся писать о чем-либо. Правильная реакция должна быть такой: "Баян? Ну и пошел нахуй, пидарас!" Тогда уже баянист задумается - а стоит ли в следующий раз вафельницу раззявать.
                        Ответить
                        • [:||||||:]
                          [:|/|/|/|:]
                          Ответить
                        • а теперь задумайся своим огромным и глупым мозгом, зачем искать код где-то на рсдн, который обосрал весь рсдн, потом постить сюда, где пол рсдна будут тупо копипастить свои коменты... зачем гонять воздух туда сюда, открой любой свой проект, там уникального говна в каждом файле хватает...
                          Ответить
                        • Это же из блога Тёмы Лебедева :http://tema.livejournal.com/94921.html

                          Вебкил, cука, такой тупой хомячек, что своих мозгов не имеет и вынужден копипастить других людей.
                          Ответить
                      • Сука, пиздец, как меня бесят тупые уепки, которые все время пишут "баян", увидев что-то, что они видели только что две минуты назад в другом месте.

                        Идите нахуй, пидарасы.

                        Я уже писал о том, что писать "баян" - это пиздец какая тупость и уепство? Идите нахуй дважды.

                        Я уже писал о том, что писать "баян" - это пиздец какая тупость и уепство? Идите нахуй трижды.

                        Я уже писал о том, что писать "баян" - это пиздец какая тупость и уепство? Идите нахуй четырежды.

                        Я уже писал о том, что писать "баян" - это пиздец какая тупость и уепство? Идите нахуй пятижды.

                        Я уже писал о том, что писать "баян" - это пиздец какая тупость и уепство? Идите нахуй итакдалеежды.
                        Ответить
                        • [:||||||:]
                          [:|/|/|/|:]
                          Ответить
                        • for(int i=1;i<+infinum;++i)
                          {
                          Я уже писал о том, что писать "баян" - это пиздец какая тупость и уепство? Идите нахуй i.
                          };
                          Ответить
                        • Э!
                          Реквестирую цикл!

                          PS. Ой, опоздал, только прочел, что уже есть.
                          PPS. Согласен, вообще. Не знаю, что за РВСН, но мне понравилось.
                          Но тут как всегда, есть два подхода к представлению информации... И, соответственно, адепты.
                          Ответить
                        • Ты ещё циклами не научился полсоваться. Плять.
                          Ответить
                        • копипаста лебедева детектед
                          Ответить
                        • template<int Index>
                          class баян
                          {
                          //...
                          };
                          Ответить
                        • Страйкер, забань этого имбицила малолетнего. Утомил уже
                          Ответить
                          • Зачем его банить? Лучше наоборот сделать ему отдельный раздел (типа стока, но персональный). С утра на уебкилушку посморел - на весь день радость.
                            Ответить
                            • неплохая мысль - в резервацию,
                              но кажись он ненастоящий
                              хоть и радует перлами
                              Ответить
                              • а по-моему вебкил здраво мыслит
                                Ответить
                                • да. пока действуют транквилизаторы, его интеллект времена достигает среднестатистического интеллекта примата: может есть без посторонней помощи, срать в коментах, гуглить и википедствовать, коллегия врачей это считает прорывом локального масштаба.
                                  Ответить
    • "удалить поле". это как?
      Ответить
    • черт, ту нет пони...:(
      Ответить
      • личинка из говна пони?
        пони нет и она здесь не насрёт. есть тебе нечего.
        Ответить
    • ну что вы стебетесь?
      сделайте пацану лабу, парашу же схватит за девятый класс по информатике!
      Ответить
    • int k = (A==B)+(A==C)+(A==D)+(B==C)+(B==D)+(C==D );
      if (k>=2) {ShowError}
      else if (k==1) {
      if (A==D || B == D || C == D) Delete(D)
      else if (A==C || B == C) Delete(C)
      else if (A == B) Delete(B);
      }
      Ответить
      • Последнюю строчку можно упростить :
        > else if (A == B) Delete(B);
        else Delete(B);
        Ответить
        • Да это тоже херня, на самом деле. Тут уже сказали, что были б A, B, C, D в одном массиве, решение было бы сильно короче.
          Ответить
      • >(A==B)+(A==C)
        true+true равно true
        Ответить
    • Я решил задачку с циклами:
      http://codepad.org/0cIUQRxL
      Имхо, без коментов код всё равно не очень понятен.
      Ответить
      • Наговнокодел больше автора данного треда.
        Ответить
        • Где?
          Ответить
          • И не стыдно? Даже не покраснел.
            Ответить
            • Я просто мечтаю покраснеть, но укажи строчку, которая должна вызвать приступ стыда.
              Ответить
              • for (size_t i=0;i<count-1;++i)
                  for (size_t j=i+1;j<count;++j)
                    while (ABCD[i]==ABCD[j] && j!=count)
                      for (size_t k=j;k<count-1;++k)

                Это, видимо, шутка?
                Ответить
                • Ну ладно, признаю, четыре цикла - перебор. Вечером писал, уставший. Кстати, напишите короче и понятнее, мне правда интересно.
                  Ответить
                  • можно сначала отсортировать потом удалить повторяющиеся... алгоритм станет нестабильным но должен быть быстрее...
                    Ответить
                    • Отсортировать? Быстрее? С чего бы? Сортировка - лишнаяя работа тут, с ней в принципе быстрее не будет. Я уж не говорю про то, что на массиве из 4х элементов накладные расходы будут, мягко говоря, заметны. Не, если заботиться о производительности, то код ТС лучше (я проверял).
                      Ответить
                      • твои первые 2 цикла это сортировка которую тут недавно обсуждали, она отработает за O(n log n)...
                        удаление лишних это O(n) а у тебя O( n log n ) + O(n/2)...
                        Ответить
                      • хотя нет... по моему я неправильно расчитал сложность твоего удаления...
                        объясни плз что происходит в 3 и 4 цикле...
                        Ответить
                        • Первые два цикла ищут все перестановки из двух элементов без учёта порядка. Пока элементы в перестановке равны, на есто второго сдвигаем хвост последовательности и уменьшаем длину. Сначала вместо while был if.
                          Ответить
                          • можно не сдвигать, а записывать туда последний (не стабильный, О(1))...
                            либо удалить все одинаковые элементы за один проход (стабильный, О(M))
                            твой вариант удаления O(M log M)...
                            где M = count - j, в среднем N/2...

                            есть еще такой вариант:
                            проход по всем элементам
                            удаление дальше по массиву таких же элементов
                            свойства: стабильный, сложность в худшем случае О(n log n) если нечего удалять...
                            Ответить
    • По крайней мере
      bool isAB=false, isAC=false, isAD=false, isBC=false, isBD=false, isCD=false;
      будет выглядеть покрасивше.

      А ещё лучше:
      bool isAB=(A==B), isAC=(A==C), isAD=(A==D), isBC=(B==C), isBD=(B==D), isCD=(C==D);
      это плюс оптимизация инициализаций.

      Но лучше, чем реализация с четырьмя циклами не придумаешь.
      Ответить

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