1. Pascal / Говнокод #21790

    −53

    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
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    uses crt;
    
    procedure dl(a,b,c,d:real; var e:real);
     begin
      e:=sqrt(sqr(a-c)+sqr(b-d));
     end;
    
    procedure abc(a,b,c,d:real; var x,y,z:real);
     begin
      x:=d-b;
      y:=a-c;
      z:=b*c-a*d;
     end;
    
    var x1,y1,x2,y2,x3,y3,x4,y4,d1,d2,d3,d4,a1,b1,c1,a2,b2,c2,a3,b3,c3,a4,b4,c4:real;
    
    Begin
     ClrScr;
     Writeln('‚ўҐ¤ЁвҐ Є®®а¤Ё­ вл ЇҐаў®© в®зЄЁ');
     Read(x1,y1);
     Writeln('‚ўҐ¤ЁвҐ Є®®а¤Ё­ вл ўв®а®© в®зЄЁ');
     Read(x2,y2);
     Writeln('‚ўҐ¤ЁвҐ Є®®а¤Ё­ вл ваҐв쥩 в®зЄЁ');
     Read(x3,y3);
     Writeln('‚ўҐ¤ЁвҐ Є®®а¤Ё­ вл зҐвўҐав®© в®зЄЁ');
     Read(x4,y4);
     dl(x1,y1,x2,y2,d1);
     dl(x2,y2,x3,y3,d2);
     dl(x3,y3,x4,y4,d3);
     dl(x4,y4,x1,y1,d4);
     abc(x1,y1,x2,y2,a1,b1,c1);
     abc(x2,y2,x3,y3,a2,b2,c2);
     abc(x3,y3,x4,y4,a3,b3,c3);
     abc(x4,y4,x1,y1,a4,b4,c4);
     write(d1:3:1,d2:3:1,d3:3:1,d4:3:1);
     ReadKey()
     End.

    Шкварюсь на ОАП. Условия задачи - даны четыре точки, которые образует четырехугольник. Нужно определить его вид и найти площадь.

    Запостил: Simodgo, 06 Декабря 2016

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

    • Вместо этого выводятся 4 стороны. Приходите на пересдачу.
      Ответить
    • '‚ўҐ¤ЁвҐ Є®®а¤Ё­ вл ЇҐаў®© в®зЄЁ'
      Напомнили старые добрые пейратские переводы
      Ответить
      • MS знатно поднасрал своим пользователям сменив кодировку у винды.
        Намерения были благими: вместоненужной в гуе псевдографики понапихать белорусских ў и украинских Ґ.

        А в итоге миллионы хомячков плакали и злились от того, что в "волков коммандере у меня русский текст, а в блокноте -- нет".
        Ответить
        • Волков вроде умел по F-какому-то менять кодировку, не?
          Я вот сейчас задумался. Это же прошло уже наверное лет 20, как я заимел первую "электронную книгу": 386 системник (горизонтальный, IBM PS/2 если что, уж не знаю, как он ко мне попал), монохромный VGA монитор, MS-DOS, откуда-то добытая коллекция всяких непонятных книг, запакованных ARJ, и HIEW для просмотра, и вся эта хуйня стоит так, чтобы можно было лёжа дотягиваться до клавиатуры и тыцать page down.
          Родные смотрели как на дебила: ну конечно, какой идиот будет читать книги не на бумаге.
          Ответить
          • Фар умел в cmd консоли. Волкову не просто было бы поменять кодировку когда карта работает в текстовом режиме:) Хотя подменить русские буквы и мог бы в принципе.

            В волковском F3 я прочитал книгу про Turbo Vision примерно в 1998-м году.
            Ответить
            • Ей-богу, где-то кодировку можно было менять. Может быть с резидентом каким дополнительно, столько лет прошло. А может я пизжу.
              Ответить
              • Я вполне верю что можно было это сделать, просто поменять можно было только русские буквы.
                Вывести значок ® которого в 866 нету было нельзя не загрузив кастомный шрифт.
                Ну а это умели делать keyrus, cyrillic итд, но шрифты наврядли были 1251=й кодировки.
                Ответить
                • А, ну тогда всё более-менее становится на свои места.
                  Ответить
              • В стандартном просмотрщике (F3) можно было менять кодировку и у Волкова, и у Нортона, но выбор был небольшой: OEM (866) и WIN (1251). NC и VC просто при выводе текста на лету перекодировали его в кодировку 866. Да, нужен был русифицированный Нортон, чтобы в нём была такая опция (в английской версии набор кодировок мог быть другим).

                В Дос Навигаторе выбор кодировок был уже покруче, но Уникода всё равно не было. И в нём можно было переключать кодировку редактируемого текста (была ли такая возможность в NC и в VC, не помню, надо проверить).
                Ответить
                • каким образом он менял кодировку? Загружал в шрифт с раскладкой 1251 в память видеокарты?
                  Тогда почему его собственная песевдографика не шла писдой?
                  >>
                  PS:
                  >> но Уникода всё равно не был

                  Слушайте, ну на одно знакоместо (помните это слово?) в VGA text mode 80x25 было два (!) байта: один на букву, один на свистелки и пирделки типа цвета и фона.

                  Ну вот отказавшись от пирделок можно получить 2^16 символов и монохромный экран.
                  А без них у тебя их 2^8, а значит даже UTF-8 нормально не сделать.

                  Уникод в "сосноличке" научились делать на писи только линуксоиды, которые нахуячили свой фреймбуфер (точнее портанули его с мака), тупо перевели карту в APA (граф режим) и стали рисовать там буквы пикселями.

                  Ответить
                  • > Загружал в шрифт с раскладкой 1251 в память видеокарты?

                    Нет. Я же говорю, он перекодировал текст на лету. Представьте себе условную функцию printf, которая не напрямую выводит поток символов в сосноль, а предварительно у каждого символа меняет кодировку.
                    Ответить
                    • Ну понятно, многие так делают. И ядро линуксовое умеет (точнее VT) и виндовый CRT.

                      Да вот только если у тебя в тексте будет слово "Єбати" или "УКРАЇНА" или "умоўны" то тебе не повезло
                      Ответить
                      • Так и было. Неподдерживаемые символы заменялись на какой-то дефолтный (Винда такие символы заменяет на знак вопроса, а какой символ был дефолтным в досовских файловых менеджерах, я уже не помню).
                        Ответить
                        • И всё равно: зацени какой подсёр в вечность.

                          Пользователи продуктов Microsoft последний раз видели текстовый режим IBM PC примерно в 1999-м году, потому что даже 16-ти разрядные приложения запускали в окошке внутри Win98.

                          Уже даже софт настройки BIOSа не юзает text mode.

                          И мы до сих пор имеем какие-то говнопроблемы виндовой консоли, какой-то code page, и прочее говно.
                          Ответить
                          • >говнопроблемы виндовой консоли
                            Бля, уже писал, что это проблемы не виндовой консоли а всякого мудачья, которое не может в виндовую консоль.
                            Ответить
                            • Это именно проблемы консоли, потому что не существует ни одной причины по которой консоль должна уметь однобайтовые кодировки.
                              Ответить
                              • А как ты предлагаешь? Убить обратную совместимость, и ебись все конем? Даже прыщеблядиё себе такого не позволяет.
                                Ответить
                                • сделать ключик /unicode, и все
                                  Ответить
                                  • Что ты конкретно сделать хочешь?
                                    Ответить
                                    • хочу такую сосноль, чтобы
                                      wprintf (L "Греция по гречески это %ls" , L"Ελλάδα");

                                      выводилось нормально и не заставляло меня думать
                                      Ответить
                                      • Это на каком языке написано?

                                        На сишарпе думаю все будет работать.
                                        Ответить
                                        • Это си, и в нем это работать не будет потому что она наивно пишет в stdout.

                                          Работать будет только через ConsoleWrite напрямую:
                                          WCHAR *txt = L"Греция по гречески это Ελλάδα, а по английски -- Greece";
                                          WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),txt,wcslen(txt),NULL,NULL);
                                          Ответить
                                          • Сишкобляди пусть сосут волосатый. А вендобляди пожалуются что у них на прыщах окошки через winapi не создаются, что тогда скажешь?
                                            Ответить
                                            • Внезапно сипайтон написан на сях.

                                              >>скажешь

                                              Сёма, ты видимо не понимаешь что такое "стардартная библиотека", с тобой трудно говорить
                                              Ответить
                                              • > "стардартная библиотека"
                                                >c
                                                /0

                                                >с тобой трудно говорить
                                                С тобой тоже. Просто перестань считать винду юниксом, и жизнь станет проще.
                                                Ответить
                                                • Дык тут же сразу видно, что винда - не юникс, а наслоения говна. Что тебе старательно и показывают.
                                                  Ответить
                                                  • Для непонятливых, краткая история. Проект Wine был основан в 1993 году. Он представлял собой проект размером 0 байт. И был идеален по архитектуре и составу. Потом в него начали добавлять баги. Проект разрастался, к проекту стали подключаться новые разработчики, которые добавляли ещё больше багов. И поэтому при каждом новом релизе принято спрашивать «Чо опять сломали?!». (с) anonymous

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

                                                      Примерно как искать иголку в стогу навоза при минус тридцати с завязанными за спиной руками
                                                      Ответить
                                                • Сема, ты не умеешь в CS.

                                                  В си есть стандартная библиотека и это ровно то, ради чего си был придуман.

                                                  Стаднатной библиотеки нет в Objective C
                                                  А в Plain C она есть
                                                  Ответить
                                                  • Сёма пытается выебнуться и сделать вид, что libc недостойна звания стандартной библиотеки на фоне, скажем, питоновской. Что неплохо выдаёт в нём неосилятора (если ещё есть, что выдавать).
                                                    Ответить
                                                    • ну питоновая стандартка правда круче сишной, так и язык более высокоуровневый. Глупо ждать от стандартной либы сей поддержку tcp/ip, когда си может быть на машине где и сокетов-то нет.

                                                      Важно что в си ЕСТЬ стандартная либа, хотя конечно в ней много говнеца, но она есть, и говорить что ее нет это глупо
                                                      Ответить
    • Въебал минус за лабу.
      Ответить
      • Порадовался бы что кто-то кроме тебя еще поцкаль юзает
        Смена растет, так сказать.
        Ответить
    • Коля, можешь не сдавать эту задачу, это ужасно, это Н О Л Ь.
      Ответить
    • лол, где-то до сих пор учат школьников на борланд паскале под дос

      Как же вы его запускаете на long mode? В досбоксе?
      -----
      Верните мой 1997-й. Хочу Turbo Pascal 7.0, Novel Netware, Dos 6.22, и 14-ти дюймовый аналоговый CRT моник.
      Ответить
      • И все, как один, патчат модуль Crt (потому что он из-за бага вылетает с ошибкой «Division by zero» на процессорах с частотой больше 300 МГц) либо включают искусственное замедление в эмуляторе?
        Ответить
        • Вот зачем они использовали частоту cpu для delay?
          Ну ёбанаый же стыд.

          В PC изначально есть два-три таймера, один из них можно запрограммировать и повесить на его прерывание обработчик (так писиспикер же программировали). И через этот обработчик считать время.
          Это позволяет делать delay независящий от частоты.

          Вот почему чуваки которые портировали Prince Of Persia на PC это поняли, и принц бегает одинаково и на 40Mhz 486 и на 650 Mhz P III?

          Ну я понимаю почему Montezzuma Revenge в 1984-м это не понимал, но Borland делал свой crt когда уже было понятно что CPU разные бывают.

          Ох, ёбаный плевок в вечность.
          Ответить
          • Очевидно, что они надеялись избавить мир от турбопаскаля к моменту появления достаточно быстрых процов.
            Ответить
            • а у борландсишного sleep или у чего-то в conio такой проблемы нет?
              Ответить
          • У Борланда тоже бегало одинаково... на процессорах, у которых растактовка инструкций одинаковая, а отличается только частота (в известных пределах). Борланд и предположить не мог, что количество тактов на инструкцию в новых моделях может уменьшиться, что у 386 и 486 появится конвейер, а у Пентиума конвейеров будет аж два, что сделает их расчёт времени исполнения эталонной инструкции бесполезным. И мы пока ещё ничего не говорили про многозадачные среды (в которых можно исполнить и досовскую программу и про существование которых Борланд не мог не знать)...
            Ответить
            • Так) фишка была в том, что борланд знал что некая инструкция (назовём её FOO) занимает N тактов.
              В начале он засекал время, затем делал FOO, затем снова брал время. Сравнивал сколько времени прошло, и делал вывод о том, что один такт на процессоре занимает M миллисекунд.

              После этого когда я делал delay(42) он делал NOOP (который занимает одну инструкцию) столько раз, чтобы получить ожидание 42 милисеки.

              В какой-то момент оказалось что инструкция FOO занимает меньше времени, чем точность часов. Борланд посчитал что она занимает 0 секунд, и при расчете DELAY получал /0.

              Так было дело?
              Ответить
              • Почти. На самом деле он не измерял время, а посчитывал, сколько раз можно сделать FOO в интервале между двумя тиками таймера, который исполняется каждые 55 миллисекунд (есть такой таймер в архитектуре IBM PC). Потом делил это количество на 55, чтобы узнать, сколько раз исполняется FOO за миллисекунду. И тут на быстрых процессорах возникало целочисленное переполнение.

                Всем ясно, откуда берётся переполнение при умножении. Но откуда ему взяться при делении?

                Дело в том, что на x86 есть инструкция деления 16-битного числа на 8-битное с 8-битным результатом; 32-битного на 16-битное с 16-битным результатом; наконец, в 32-битном режиме (включая 16-битный режим с префиксом для 32-битных данных) есть деление 64-битного числа на 32-битное с 32-битным результатом. Если частное не поместилось в прокрустово ложе (а оно может не поместиться, ибо под него отведено в два раза меньше места, чем под делимое), генерируется исключение.

                Борланд опрометчиво решил, что 16 бит хватит всем, т. е. что за 55 миллисекунд выполнить FOO более 65535 раз невозможно ни на каком процессоре.

                Вся история и вариант патча легко гуглится по запросу "crt div 55":
                http://dssp.petrsu.ru/~yura/pyldin/yura/u_crt.htm
                Ответить
                • > за 55 миллисекунд выполнить FOO более 65535 раз невозможно

                  Вру. Не так: за 55 миллисекунд выполнить FOO более 55*65535 раз невозможно. Т. е. что результат деления к-ва итераций на 55 не превысит 65535.

                  Пусть FOO исполняется за N тактов. Тогда предел непатченного модуля Crt равен N*65535 тактов в миллисекунду или 65535000*N тактов в секунду.
                  Ответить
                  • Ну ладно, а почему это вообще было надо?
                    Чтобы не напрягать таймер делеем, а сделать такой вот дешовый делей?
                    Ответить
                    • Для совместимости со всяким говном типа PC-1, PC-2, XT, PC-jr, NEC V20, NEC V30 etc., на которых таймер с периодом 55 мс есть, а нормального таймера с периодом 1 мс нет.

                      Нормальный таймер (см. по ссылке самый последний пример с вызовом прерывания 15h) появился только на двушках. Борланд же решил, что совместимость важнее пирфоманса.
                      Ответить
                      • P.S. Хотя с другой стороны, была какая-то директива оптимизатора ({$G+} или типа того), которая разрешала использовать инструкции 80286, когда это нужно для пирфоманса. Странно, что они не сделали версию Delay для 80286, хотя знали о его существовании.
                        Ответить
        • >на процессорах с частотой больше 300 МГц
          >97
          Ответить

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