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

    +67.9

    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
    char blt=0;
    void WriteBit(bool bit)
    {
    	if(BitCount<9)
    	{
    		if(bit){blt|=(1<<BitCount);BitCount++;}
    		if(!bit){blt&=~(1<<BitCount);BitCount++;}	
    
    	}
    	else
    	{
    		out_file<<blt;
    		BitCount=0;
    		blt=0;
    	}
    }

    че-то типа запись в байт битов))

    Запостил: fekrado, 19 Января 2010

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

    • О, да! Феерически!
      И даже С++ вижу!
      Ответить
    • Божественно!
      Ответить
    • Нормальный код, кстати. Но прикольный, да.
      Ответить
      • Каким образом код использующий глобальную переменную внутри функции, там где без нее вполне нормально можно обойтись, можно называть нормальным :)
        Ответить
        • эт там не глобальные)) все внутри класса)
          Ответить
          • Ээээ... мммм... почему тогда не
            void ClassName::WriteBit(bool bit) ???

            это что же... такая функция внутри декларации класса сразу выписана?

            айайайай, ойойойой... дважды говнокод :)
            Ответить
            • Постер просто упростил лист, чтоб не копировать весь класс. Не видно? Тебе давно компилятор позволял члены сразу объявлять?
              Ответить
              • Можно и весь класс постить, но явно не влезит))
                Ответить
              • Да это-то понятно!

                Непонятно, нах%ра извините за выражение, такие большие функции сразу внутри класса выписывать.

                Ну в общем, хозяева-баре, конечно. Но то что обычно декларации идут в хедеры, а уже реализация, собсно в сишники, и почему так делается, надо знать :) И почему маленькие функции сразу при обьявлении класса - нормально, а большие - плохо. И вообще то что изначально функции описанные сразу внутри класса - становились инлайн - никто не помнит уже? ;)
                Ответить
                • Ну ваще это не внутри а с наружи) просто я кусок выдрал) если интересно то там и стояло ::
                  Ответить
                  • Воблин! ну нафига народ в заблуждение-то вводить :)))))
                    Ответить
                • Мне как-то обычно влом, например, когда класс на ходу придумываешь и только начинаешь его писать, выносить всё. Вот когда появляется более-менее определенный каркас тогда и начинаю выносить.
                  Ответить
    • Код ужаснее некуда, куча глобальных объектов, ООПом тут и не пахло.
      Ответить
      • Еще как пахнет)) просто полностью класс постить нет смысла))
        Ответить
    • для тех, кто не понял: каждый 9 бит не попадает в файл...
      Всегда ваш,
      К.О.
      Ответить
      • Не могу понять. Используется какой-то член класса, который для функции является внешней переменной.
        Вопрос - какое нах ООП? От того, что Вы начали использовать классы ничего не поменялось. Просто глобальные переменные модуля теперь являются глобальными переменными класса. Те же яйца, только всмятку. Или я неправ?
        tim
        Ответить
      • 9-ый бит - это что-то типа бита паритета, потому и не попадает? Странный код для С++...
        Ответить
        • нет, он просто исчезает... так как когда приходит 9 бит, байт записывается в файл, а сохранение бита пропускаются...
          Ответить
    • С 9-м битом всё на самом деле ещё хуже.
      В blt пишутся биты 0-7, бит номер 8 игнорируется (слишком большой сдвиг), во время бита 9 идёт запись байта и он тоже игнорируется.

      Плюс строчка
      if(!bit){blt&=~(1<<BitCount);BitCount++; }
      ничего не делает ибо там и так 0.
      Ответить
      • Короче, я смотрю, вы ++ не знаете...., но хотяб проверили и убедились, что все это работает...а самые "умные" которые пишут типа " Типа один зазубрил что это выставить бит в ноль, но нихуя не понял как работает, другой списал и буквы переменных моменял"
        просто видать сам в этом не шарит и он полный ляля)) и все тут...
        Ответить
    • Хуета хуёт. Код писал студент которому похуй на знания и на страну, важна бумажка чтоб устроится и просить килобакс за ничегонеумение. Ни один препод такому говну никогда не научит.
      Налицо явное непонимание конструкций типа "а &= ~(1 << b)". Типа один зазубрил что это выставить бит в ноль, но нихуя не понял как работает, другой списал и буквы переменных моменял. Тьфу ненавижу, иди рисуй или поваром стань, от этого будет больше пользы.
      Ответить
    • Я вот читаю твои камменты... Мне кажется ты слишком часто употребляешь слова "хуй", "хуйня" и называешь всех школотой и подобными. Психологи могли бы сказать, что "хуй" означает "секс, влечение", причем неудовлетворенное. Филолог мог бы связать это как "влечение к хуям школьников", либо просто "секс со школьниками". Все эти моменты запрещены законодательством, что объясняет неудовлетворенность. Мне кажется, тебе стоит об этом подумать.
      А здесь тебя с такими раскладами забанят по айпишнику. Будешь свои IT-познания показывать во время составления цепочек проксей.
      Ответить
    • а накуя вообще нужна строчка if(!bit){blt&=~(1<<BitCount);BitCount++; } ?
      ведь каждый новый байт инициализируется нулем (все биты обнулены), т.е. достаточно просто единички в нужные разряды писать. ну и с пропадением девятых битов уже говорили.
      Ответить

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