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

    0

    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
    #include <iostream>
    
    int main()
    {
    setlocale(LC_ALL, "Russian");
    long long int num;
    long long int divider = 1;
    int max = 0;
    int min = 9;
    std::cout.unsetf(std::ostream::unitbuf);
    std::cout « "Введите число: ";
    std::cin » num;
    while(num>=divider)
    {
    if(num/divider%10>max) max = num/divider%10;
    if(num/divider%10<min) min = num/divider%10;
    divider = divider * 10;
    }
    std::cout « max « " - большая цифра" « '\n';
    std::cout « min « " - меньшая цифра";
    return 0;
    }

    Запостил: BelCodeMonkey, 14 Января 2019

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

    • @setlocale(LC_ALL, "Russian");

      Грязный макрос над SetSonsoleOutputCP?
      Ответить
      • Реализация setlocale где-то в недрах «стандартной» библиотеки. Как именно она реализована, зависит от кокококонкретного кокококомпилятора. Известно только, что должна каким-то образом установить локаль. Да, в библиотеке для «Windows» она скорее всего вызовет SetSosnooleOutputCP.
        Ответить
        • не свсем, матапушта ей надо поставить локаль у CRT а не у текущей сосноли

          extern "C" char* __cdecl setlocale(int _category, char const* _locale)
          {
              // ....вырезано
          
          
                  /*
                  * Note that we are using a risky trick here.  We are adding this
                  * locale to an existing __crt_locale_data struct, and thus starting
                  * the locale's refcount with the same value as the whole struct.
                  * That means all code which modifies both __crt_locale_data::refcount
                  * and __crt_locale_data::lc_category[]::refcount in structs that are
                  * potentially shared across threads must make those modifications
                  * under the locale lock.  Otherwise, there's a race condition
                  * for some other thread modifying __crt_locale_data::refcount after
                  * we load it but before we store it to refcount.
                  */
                  *refcount = ptloci->refcount;
                  ptloci->lc_category[_category].refcount = refcount;
                  ptloci->lc_category[_category].locale = outlocale;


          воще CRT на винде юзать харам
          Ответить
      • Это чтобы русский язык нормально работал.
        Ответить
        • uMeHHo noemoMy 9l 3a "JlamuHuLLy"
          Ответить
          • 91 8006111_3 34 11_1/1%Pb1.
            Ответить
            • 0100000100100000001110010110110000100000 0011001101100001001000000110011101000010 0110111101110101001101000100100001100010 0110110001110101001000000100101101101111 01100111
              Ответить
              • ╨╛╨╣ ╨┐╨╕╨╖╨┤╨╡╤Ж
                Ответить
                • 1001111100100000101010111110111010100001 1010101111101110001000001010000110100101 1010001110100000111000101110110000100000 1010111110101110001000001110001110101011 1010100011100110101001010010000010100011 1010111010101011111010111010110000100000 1010100000100000101010101110001111100001 1010000011100010111011000010000010101111 1110000010101110111001011010111010100110 1010100011100101001000001010011110100000 0010000011100001101011101110000110101010 1010100000101100001000001110111100100000 1010010010100101101010111010000011101110 0010000011101101111000101010111000100000 1010101010100000101001101010010011100011 1110111000100000111000011110001110100001 1010000110101110111000101110001100101110 0010000010000000001000001010111110101110 0010000010100010101011101110000110101010 1110000010100101111000011010010110101101 1110110011101111101011000010000011101111 0010000010101011111011101010000110101011 1110111000100000101011101010000110101100 1010000010100111111010111010001010100000 1110001011101100111000011110111100100000 1010001110101110101000101010110110101110 1010110000100000101010000010000010101110 1010000110101101101010001010110010100000 1110001011101100001000001010111111100000 1010111011100101101011101010011010101000 1110010100101100001000001010110110101110 0010000010100001101011101010101111101100 1110100010101000101011011110000111100010 1010001010101110001000001010111110101110 1110011110100101101011001110001100101101 1110001010101110001000001110000110101110 1010111111100000101011101110001010101000 1010001010101011111011111110111011100010 1110000111101111001011000010000010101101 1010000010100010101001011110000010101101 1010111010100101001000001110000111100010 1010010111100001101011011110111111101110 11100010111000011110111100101110
                  Ответить
                  • Почему-то захотелось сложить из ноликов и единичек goatse... Но подушка уже не отпустит к компу.
                    Ответить
                    • Воздадим же хвалу регуляркам!
                      
                      * g o a t s e x * g o a t s e x * g o a t s e x *  
                      g00000000000000000000000000000000000000000000000g  
                      o01000001000000000000010000000000001000010000000o  
                      a10000000100000000000001000000000010000001000000a  
                      t10000000110000000000000100000000010000000100000t  
                      s10000000010000000000000100000000110000000100000s  
                      e01000000010100000001001110001111011000000010000e  
                      x00100000011000111110000000000111111010000010000x  
                      *00010000001111000000000000000000001111000010000*  
                      g00001100000100000000111111111111111111100010000g  
                      o00000010000011111111101011101011111100100010000o  
                      a00000001000100101111001111110111111110010010000a  
                      t00000001101000101111110000001011111110011100000t  
                      s00000010111000111111100000001001111100010010000s  
                      e00000100010001111111111111111001101101000001000e  
                      x00000100001001110001111111111111011110000000100x  
                      *00001010000111111000111110001110000000000000100*  
                      g00001001100000000001111000000011000000000011010g 
                      o00010000000000000010000100000100100000000000010o  
                      a00010000000000000100001000000010010000000000010a  
                      t00010000000000101000010000000001001000000000001t  
                      s00010000000001010000001111111110000100000000001s  
                      e00100000000010100000000100001000000010000000001e  
                      x00100000000001000000000100001000000010000000001x  
                      * g o a t s e x * g o a t s e x * g o a t s e x *  
                      Правда хуёво получилось.
                      Ответить
                      • Ещё бы фон чёрный.
                        Ответить
                        • я теку от зеленых буковок на черном фоне. Сразу ассоциация с настоящим программированием.

                          Именно по этому я за "NetBSD"

                          https://kids.kiddle.co/images/8/87/NetBSD_6.1_Startup.png
                          Ответить
                          • Я тоже теку:)

                            Я помню когда я был мелкий у моего отца был такой элт-монитор с чёрно-зелёным изображением, такой с маленьким экраном (не помню точно, помоему 14" или даже меньше).
                            Ещё был такой комп, который располагался горизонтально на него ставился тот монитор, он включался так: был такой замок (или как его правильно назвать), вставляешь ключ, поворачиваешь чтобы можно было включить, потом нажимаешь на кнопку включения питания, потом на кнопку запуска, жд у него был такой большой толстый, на 20 Гб, у него ещё кроме дисковода для дискет было 2 cd дисковода, но не как современные с лотком, а диск просто вставлялся в прорезь. Жаль я был мелкий и тогда меня это особо не интересовало. Моник выкинули, а под корпус древнекомпа сунули современную начинку, а потом и его выкинули :(
                            Ответить
                            • Я так до сих пор и не знаю, что это была за модель :(
                              Ответить
                            • >> был такой замок
                              Замок был для блокировки клавиатуры.

                              >> потом на кнопку запуска
                              Возможно, это фантазия или компьютер неизвестной мне платформы. Из кнопок видел только «Turbo» и «Reset». Когда появились материнки с поддержкой «ATX», кнопку «Turbo» стали подключать к контактам «Sleep» материнки.

                              >> жд у него был такой большой толстый, на 20 Гб
                              Я однажды видел большой и толстый на 20 ... мегабайт, а не гига. Он был пятидюймовым и двухэтажным, т. е. занимал места как два CD-привода. И интерфейс был не "IDE", а "MFM" или "RLL" (к нему шли два шлейфа, не считая питания). Вот это был большой и толстый! На нём ещё была этикетка, на которую от руки вписан список бэд-блоков!

                              А винчестеры на 20 гигабайт –— это ерунда. Кстати, на материнках конца 1990-х с «Award BIOS» из-за ошибки нельзя было использовать винчестеры больше 8 гигабайт. Надо было патчить BIOS. Ошибка там была дурацкая: переполнение целого питуха при выводе объёма винчестера на экран после POST.

                              >> но не как современные с лотком, а диск просто вставлялся в прорезь
                              Щелевые CD-приводы такие же современные, как и с лотком.

                              У «Sony» была ещё одна разновидность CD-приводов, действительно древняя и давно исчезнувшая: там был не лоток и не щель, а дырища, в которую пролезала рука. В эту дырищу вставлялся картридж, в который нужно было предварительно вставить компакт-диск. По замыслу «Sony» диски можно было и хранить в этих картриджах (вместо коробочек), чтобы они не царапались. Но проект не взлетел, выжили приводы с лотком, а щелевые появились чуть позже.
                              Ответить
                              • одна кнопка включала питание компа, другая -- монитора
                                Ответить
                              • > Из кнопок видел только «Turbo» и «Reset».
                                Сам корпус от него выкинули только года 2-3 назад, я точно помню 3 кнопки: power (она была в стороне от остальных), turbo и reset

                                > на 20 ... мегабайт, а не гига
                                возможно, я был мелкий и мог неправильно запомнить, но я помню только один шлейф и питание.

                                > Щелевые CD-приводы такие же современные
                                Скорее всего гость ниже прав и это были для дискет. Но сам я таких больших дискет не видел.
                                Ответить
                                • Первые IBM PC были оснащены приводом (даже двумя!) для дискет 5'25. Большие черные тонкие квадраты, их еще часто клали в бумажный конверт.

                                  Такие дискеты жили до второй половины 90х, могли (в зависимости от формата) вмещать примерно от 360 килобайт до 1.2 мегабайта.

                                  Были замены трехдюймовками к концу 90х.
                                  Ответить
                                  • У меня есть такой живой привод и даже дискета. Одна. Её можно использовать вместо закладки для книги. Когда у меня появился комп, приобретать пятидюймовки уже смысла не было.

                                    Я видел даже гибридные дисководы. У них две параллельные щели: одна трёхдюймовая, другая пятидюймовая. Широкого распространения такие кентавры не получили.

                                    Ещё раз в жизни видел зип-драйв. Сначала они были непопулярны из-за цены, потом из-за того, что появились CD-RW (у которых объём больше).
                                    Ответить
                                    • Я видел зип-драйв iomega который.

                                      В 2001 году я тусил в компании которая делала широкоформатную печать.

                                      Флешек тогда не было, а растровые файлы могли весить по 10-15 метров. Там было много разных приводов, и такой вот тоже.
                                      Ответить
                                      • зы: пишущие сидюки появились в широком обиходе году к 2002-2003, и тогда еще ставили два сидюка: один только чтобы читать, второй чтобы писать
                                        Ответить
                                    • В пятидюймовую еще цд помещался.

                                      Ой блядь, RW можешь даже не вспоминать. Они еще уебищнее дискет были.
                                      Ответить
                                      • Чем же RW были уёбищнее дискет?
                                        Ответить
                                      • Совершенно верно: CD имел форм-фактор такой же как и 5'25.
                                        Подключался 40-ка жильным ribbon (интерфейс ATAPI, специально расширенный ATA).

                                        А что не так с RW?
                                        Ответить
                            • Все это очень странно. Черно-зеленое изображение это геркулес:
                              https://blog.krusher.net/wp-content/uploads/2018/08/maniac-mansion-1987-hercules.jpg

                              Она была двуцветная: один цвет черный, а другой серый, зеленый или желтый в зависимости от модели.

                              Горизнотальный корпус это Desktop (вертикальный это Tower).

                              Desktop был популярен в 80е у первых моделей PC и клонов

                              https://upload.wikimedia.org/wikipedia/commons/thumb/6/69/IBM_PC_AT.jpg/1200px-IBM_PC_AT.jpg
                              
                              https://upload.wikimedia.org/wikipedia/commons/6/69/IBM_PC_5150.jpg


                              Замком отключали клавиатуру примерно до первых пентиумов

                              https://farm5.staticflickr.com/4324/36157813656_dd7880cbf4_k.jpg


                              То-есть ты описываешь такой комп из 80х: или классический IBM PC или Comapq, или один из его десятков клонов.

                              Большой винчестер это MFM, до IDE:
                              https://btsecuresession.com/grrpicturehosting.co.uk/sixbit_images/171099-001.jpg
                              
                              https://vignette.wikia.nocookie.net/uncyclopedia/images/0/08/5.25_inch_MFM_hard_disk_drive.JPG/revision/latest?cb=20091129162959


                              Но меня смущает его размер: 20Гб это уже год так 2000й и Udma а никак не MFM.

                              И сидиромы тоже немного странно.. Это не были ли дисководы для 5'25

                              http://farm4.static.flickr.com/3311/3199225651_c37dc1006c.jpg
                              
                              https://classiccomputershop.eu/Files/5/17000/17331/ProductPhotos/MaxContent/338966029.jpg
                              Ответить
                              • > https://upload.wikimedia.org/wikipedia/commons/thumb/6/69/IBM_PC_AT.jpg/1200px-IBM_PC_AT.jpg
                                Типа того. Моник был другой, но сам комп немного похож, но только справа, на месте дисководов была кнопка power и замок, сами дисководы были посередине, слева были кнопки turbo и reset, а рядом с ними панелька с индикаторами.
                                Ответить
                                • olivetti какой-нить или tandy

                                  клонов у PC был вагон и маленькая тележка
                                  Ответить
                          • У меня чёрно-зелёный ассоциируется с временами, когда в школе изучал информатику на «Агатах». У мониторов было нарушено сведение лучей (оно корректируется магнитами на горловине кинескопа), поэтому красный, зелёный и синий луч, соответствующие одному пикселю, попадали не в одну триаду люминофоров, а в разные. Т. е. белый пиксель распадался на три довольно удалённых друг от друга пикселя. Белые буквы троились, жёлтые, коричневые, фиолетовые и бирюзовые двоились.

                            Опытным путём мы установили, что не двоятся и не троятся только цвета, состоящие из одной из компонент R, G или B, поэтому стали выводить текст только красными, синими или зелёными буквами, полностью исключив белый цвет.

                            К слову, в текстовом режиме «Агатов» в целях экономии видеопамяти не был предусмотрен цветной текст на цветном фоне: можно было выводить либо цветной текст на чёрном фоне, либо чёрный на цветном.
                            Ответить
                            • >попадали не в одну триаду люминофоров
                              ауч!! глаза-то не вытекли?

                              > фиолетовые и бирюзовые
                              Там был CGA чтоли?

                              >либо цветной текст на чёрном фоне, либо чёрный на цветном.
                              Одним битом кодировалось кого цветнить?

                              Я не понима.: если у вас CGA, значит у вас 2 бита на цвет (всего было 16 цветов но в палитре одновремено вроде 4). Еще бит на "кого цветнить".
                              Что можно сунуть в пять оставшихся байт, даже все буквы не сунешь.

                              Значит, на знакококококококместо было 2 байта (как и у писей)
                              Тогда што они там экономили?

                              зы: а, чорт, артибуты же. Мигалки всякие, да?
                              Ответить
                              • Читай внимательно: я писал про «Агаты». Они вообще несовместимы с «IBM PC». Это советская пародия на «Apple ][», но только не с совмещённой клавиатурой, а с отдельной.

                                https://ru.wikipedia.org/wiki/Агат_(компьютер)
                                Ответить
                                • Хорошо, к чорту писи.

                                  Байты в них были? Сколько байт было на знакоместо?

                                  Или там вообще не было текстовгго режма?
                                  Ответить
                                  • Мы тогда изучали «Бейсик». Были команды для включения нескольких текстовых режимов и несколько графических. Адреса видеопамяти мы не знали, поэтому не могли проверить.

                                    Добавил ссылку к предыдущему комментарию, там режимы перечислены.
                                    Ответить
                              • > Мигалки всякие, да?

                                Цветов было 8 или 16, точно не вспомню. У «Бейсика» были команды NORMAL (текст, выводящийся после этой команды, был цветным на чёрном фоне), INVERSE (текст, выводящийся после этой команды, был чёрным на цветном фоне), FLASH (текст, выводящийся после этой команды, мигал: поочерёдно сменялись виды, как у NORMAL и INVERSE).

                                Три режима текста –— это как минимум два бита (значит, должен быть четвёртый, секретный режим?).
                                Ответить
                              • >> ауч!! глаза-то не вытекли?

                                У одного монитора ещё не была настроена фокусировка. Мы даже шутили, что это симуляция зрения в минус десять диоптрий.

                                Школа по таким «мелочам» ремонтников не дёргала. Вызывали только тогда, когда комп совсем переставал включаться.

                                Пикантности добавляло то, что компы периодически самопроизвольно зависали (вероятно, из-за высохших электролитических конденсаторов или ещё из-за какой-то физической фигни), а жёстких дисков у них не было (загрузочную дискету нам давали буквально на минуту). Дискет тоже почти ни у кого не было (к слову, их надо было специальным образом отформатировать, ибо даже формат сектора у «Агата» и у «IBM PC» не совпадал, не говоря уже о ФС). Если комп успевал зависнуть до того, как учитель посмотрел программу, её приходилось набирать заново.
                                Ответить
                                • Но ручка то была для настройки фокуса?:)

                                  Мы писали программы в тетради, а потом вводили их в комптютер

                                  Я видел школьные классы с машинами без дискет: они грузились по сети (а может и вовсе были терминалами)
                                  Ответить
                                  • >> Но ручка то была для настройки фокуса?:)

                                    Кажется, наружу она выведена не была, т. е. без вскрытия корпуса никак не настроить.

                                    >> они грузились по сети (а может и вовсе были терминалами)

                                    Я о таких классах слышал от знакомых. У нас ситуация была противоположная: сети не было. Даже когда завезли 386, сети тоже не было.
                                    Ответить
                                    • Я ходил в кружок где меня учили пасклю (вторая половина 90х), там была novel netware и dos
                                      Ответить
                          • Вспомнил, где ещё видел зелёные буковки на чёрном фоне. Венгерские терминалы, похожие на «Видеотон 52600» по ссылке, входившие в состав СМ-1420 или типа того:
                            http://old-pc-museum.narod.ru/index/0-13
                            Только клавиатуру я видел другую. Там были функциональные клавиши чуть ли не до F20.

                            Был примерно 2002-й год. Потом из того кабинета их выкинули и сразу поставили «Пентиумы».
                            Ответить
                            • тащемто терминал VT100 фирмы dec -- обязательный атрибут и unix и айбиэмовых OS тоже был монохромный с черно-зеленым

                              https://hackadaycom.files.wordpress.com/2013/10/vt100.jpg?w=580


                              нетбздуничька потому и черно-зеленая, впамять о своем BSDетстве.

                              ах да, чуть не забыл!
                              Схема в WinDbg у меня тоже черно-зеленая
                              Ответить
                              • зы:
                                ааааааааааааааа

                                http://ollydbg.de/Jason/index.htm
                                Ответить
                              • Очередная фотка «Видеотона»:
                                https://images.hvg.hu/image.aspx?id=639a3bb1-99d8-4a64-a9b3-16930e9a464c&view=7fcefbf8-ac48-4ee6-aef5-32203afa118c


                                P.S. Забыл перелогиниться. Надо было с «Икаруса» такое отправлять.
                                Ответить
                                • симпатичная
                                  жаль что ей наверное уже лет шестьдесят
                                  Ответить
                                  • Время безжалостно...
                                    Ответить
                                    • Вот да.
                                      Еще вчера я пялился в пузаты 14" ЭЛТ монитор на котором был текстовый, псевдографический интерфейс турбовижен, на котором был написан IDE Borland Pascal, и писал там свою игрушку в 320x200 под 13й режим VGA.

                                      А уже сегодня у меня есть коллеги 1996-го года рождения которые не застали Windows2000
                                      Ответить
                            • зы

                              еще коммодор64 был таким

                              https://i.kinja-img.com/gawker-media/image/upload/s--KTq9kVR1--/c_scale,f_auto,fl_progressive,q_80,w_800/zdsgzq2fsbyminket7qi.jpg
                              Ответить
                      • The matrix has you
                        Ответить
            • ёютёхь ╕сє фрышё№
              Ответить
    • В этом коде не хватает
      std::system("pause");

      Без этой строки преподаватели не верят, что лаба написана самостоятельно, а студент её вообще запускал.
      Ответить
      • нет, в настоящей лабе переменная должна называться не num а cislo
        Ответить
      • while(1) {;};
        Ответить
      • Ну не знаю, у нас писали в Visual Studio, там если запускать по ctrl-f5 (или по alt-f5, не помню) окошко консоли сразу не закрывалась. Никто никаких пауз не делал.
        Ответить
        • В новых студиях оно теперь по-умолчанию не закрывается, кстати.
          Ответить
          • Кстати, есть возможность один раз на одного пользователя/одну студию это настроить, а не один раз на проект?
            Ответить
            • Вроде бы это — «Options -> Debugging -> General -> Automatically close the console when debugging stops» (в VS 2017 — самый последний пункт).
              Ответить
              • О, это уже интересно. А то я видел только рекомендацию про Linker -> System -> Subsystem = CONSOLE в настройках проекта.
                Ответить
                • А, да, без установленной подсистемы оно работать всё равно не будет.
                  Ответить
                • лол
                  причем тут сабсистема?

                  разумеется, тебе нужна сабсистема консоль чтобы теьбе автоматом создалась консоль и вызвался main (а не WinMain)
                  Ответить
                  • Если сабсистема не установлена (например, проект создавался из шаблона «Empty Project»), то консоль всё равно будет создаваться — но после завершения работы будет закрываться вне зависимости от настроек.
                    Ответить
                    • А знаешь почему она будет создаваться?
                      Потому что

                      CONSOLE is the default.
                      https://docs.microsoft.com/en-us/cpp/build/reference/subsystem-specify-subsystem?view=vs-2017


                      линканись без сабсистемы и проверь dumbbinом
                      Ответить
                      • Ты понимаешь, что ты поехавший? Не я, блядь, не 1024--, а ты!
                        Ещё раз: если явно не установить подсистему в проекте, удержание окна консоли после завершения программы работать не будет.
                        Ответить
                        • Неприятно это признавать, но ты прав:

                          Не смотря на то, что в обоих случаях подсистема одинаковая
                          6.00 subsystem version
                          3 subsystem (Windows CUI)


                          CTRL+F5 приводит к pause только если подсистему установить явно, словно бы авторы студии не знаю какая система у нас дефалтна. Студия неконсистентна и безумна, но селяви.
                          Ответить
    • std::cout << "test";
      std::cin >> test;
      Ответить
    • Как у тебя сдвиги в «ёлочки» превратились?
      Ответить
      • #define « <<
        #define » >>
        Ответить
      • Вероятно, кокококод скокококопирован со стены Вкококококонтакте.
        Ответить
        • Или вообще из «Ворда».
          Ответить
          • Именно поэтому я за \TeX{}.
            Ответить
            • Раньше меня тоже вела дорога «TeX'а»… А потом я поехал от ебанутых «\begin{center}\begin{tabular}{ l | c | r }\hline 1 & 2 & 3 \\ \hline 4 & 5 & 6 \\ \hline 7 & 8 & 9 \\ \hline \end{tabular} \end{center}» и стал писать на крестах.
              Ответить
              • Зачем ограничивать себя? Можно же писать на Literate C++, смело смешивая ТеХ мокросы, сишный препроцессор и шаблонное метапогромирование, получая на выходе невероятно красиво отформатированный код!
                Ответить
        • Я против всяких вконтактов.
          Ответить
    • >> std::cout « "Введите число: ";
      >> std::cin » num;

      Разъебать!
      Ответить
      • ?
        Ответить
      • Тебе бы, Хуй Иосифович, только бы разъебать!
        Ответить
        • #25404 и #18591 в хузе почти разъёбаны: более 8 тысяч комментариев, 500 Internal Server Error через раз. Скоро спамботы совсем не смогут в них спамить.

          Осталось разъебать #18877, #17518, а также #56, если вдруг спамботы в них вернутся.
          Ответить
          • > осталось разъебать
            Ты так весь ГК разъебёшь...
            Ответить
            • Сейчас на «Ру» сток чистый, потому что «Хуз» по техническим причинам не может синхронизировать #25404 и #18591.

              А вот в стоке «Хуза» полная жопа... Спамеры продолжают сыпать трекбеки в перечисленные говнокоды, а «Хуз» пока ещё в состоянии их принять.
              Ответить

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