- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
#include <stdio.h>
#define isdigit(c) (c > 47 && c < 58)
int main()
{
int curChar = 0, prevChar = 0, i = 0;
for(; i < 12; i++)
{
if(prevChar != 0 && isdigit(prevChar) == isdigit(curChar))
i = 13;
prevChar = curChar;
if((curChar = getchar()) == 10)
break;
}
printf("%s!\n", i%2 == 0 ? "Error" : "Ok");
return 0;
}
это stdio.h ващето
стандартная, типа, библиотека
Хотя в Windows 3.x такой функции нет. В третьих форточках, правда, и консоли нет, так что придётся искать стороннюю реализацию консоли. Вот беда...
Блин, да в те времена 98% программ были досовыми и работали с command.com
Тэпэшка.
1. Досовская программа для реального режима процессора.
2. Досовская программа для 16-битного защищённого режима (Борланд поставлял RTM+DPMI16 — транслятор функций своего API в досовские функции).
3. Виндовая программа для оконного режима Win16.
Первые два варианта выполнялись либо в ДОСе, либо в виртуальной машине ДОСа, которая была встроена во все версии Windows. Никакой ко-ко-консоли для Win16 у Борланда не было.
*****
Борландовский Турбо Дебаггер умел подменять видеодрайвер своим и создавать два «рабочих стола»: на одном сам Турбо Дебаггер, нарисованный в текстовом режиме с помощью Turbo Vision, на другом — все приложения Windows. Но назвать это полноценной консолью язык не повернётся, потому что Турбо Дебаггер предоставлял эту среду только для себя самого.
*****
«Консоль» для Win16 была в проекте RSX (скачать можно отсюда:
ftp://ftp.delorie.com/pub/djgpp/current.old/v2tk/rsxdj151.zip
). «Консольку» с помощью средств GDI рисовала программа rshellwx.exe, но запускать в ней можно было только программы, специально собранные компиляторами EMXGCC и DJGPP. Ага, собрать программу для 32-битного защищённого режима ДОС, а потом с помощью пакета RSX запустить в Win16.
До винконсоли эта среда тоже не дотягивала, потому что из программы можно было пользоваться только функциями, предоставляемыми DPMI, а не WinAPI.
был такой, да?
вот прямо с кольцами защиты, и при этом 16 бит?
>>либо в виртуальной машине ДОСа
Virtual 8086 mode был только для protected mode же
google: 80286
но так ведь это никто не использовал
там и виртуальной памяти-то не было
Sz: Size bit. If 0 the selector defines 16 bit protected mode. If 1 it defines 32 bit protected mode. You can have both 16 bit and 32 bit selectors at once.
о, сколько нам открытий чудных
И Интел — сын ошибок трудных,
И Борланд — Парадоксов друг.
Да, я пытаюсь вернуть 97-й.
виртуалкой с dos 6.22?)
есть мнение что современные виртуалки не полностью реализиуют все спецификации IBM PC, и может что-то не заработать. Ну там наверняка они криво эмулируют контроллер клавиатуры i8042 или там прерывание BIOS не умеет сказать сколько дисководов в системе
Было два типа DPMI: 16-битный (например, встроенный в Win16 и борландовский RTM) и 32-битный (а их было целое море, например, DOS4GW).
> Virtual 8086 mode был только для protected mode же
Досовскую программу, рассчитанную на реальный режим, можно было запускать как в реальном режиме, так и в Virtual 8086 из-под защищённого. Редкую программу нельзя было запустить из виртуального режима (к таким исключениям относилось либо совсем старьё, написанное во времена 8086/8088, либо откровенный говнокод).
просто ни однасовременная ось (ни linux, ни фря ни Winnt) сегменты-то не использует вроде
а на x64 их и вовсе выпилилли
Все используют. Куда от них денешься. Просто они настроены под flat режим и ты их не замечаешь. Даже на x64 от них рудименты остались...
Именно потому и выпилили)
В те нелёгкие времена приходилось создавать сегменты для 16-битных программ, а в Windows 95/98 (и в OS/2) ещё и некоторые драйвера были 16-битными.
В Win32 регистр FS указывает на сегмент с базой, отличной от других сегментных регистров. Т. е. даже в чистой 32-битной среде Винда создавала специальный сегмент:
https://en.wikipedia.org/wiki/Win32_Thread_Information_Block
Тем не менее, консоль в Win16 была (и даже могла переключаться между чёрным окошком и полным экраном), но доступна она была только для досовских программ. Для приложений Windows у неё не было «публичного интерфейса».
А вот у Windows 95 и NT, имеющих полноценную текстовую консоль, успех был. Неужели текстовая консоль оказалась важнее гуя?
Был коммандком 16 bit
>>Си
или там в stdbool нахуивертили?
Не благодари
Не благодари
я неправильно задание понял
Описание и процесс говнизации - напитоне http://pastebin.com/jjTrRQq7
* Всё, что не цифра - то буква
Во-вторых,
Длину строки как бы надо проверять
нахуя проверять условия задачи?
такого варианта не было
ласт вариант :D
Глядишь, и уважение будет, и зарплата хорошая, и жизнь наладится...
Вот это отличная находка. Когда читаешь, просто хренеешь. Думаешь "ну, когда же оно на краях глюканёт?"
Экономия на спичках в духе олимпиадных задач.
> str[0]
> (l%2)==1
Говорили же бородатые дяди "Выбирай язык под задачу". Это не херня, это херняша.
Перепишите на пацанскую сишку или приходите на педесрачу.
Осторожно! Пиздец!
https://ideone.com/3fWW1w
https://ideone.com/N4vxCJ
https://ideone.com/wVdzs6
Компилятор подумал: "посчитаю-ка я для начала p = getchar() > '9', а затем сделаю n = p. Теперь надо посчитать их xor - но они же одинаковы. Значит в результате будет 0. Заменим всю эту херню на a = 0".
Что-то меня начали с самими продвинутыми программистами говнокода сравнивать, к чему бы это?
во-первых макросы надо КАПСОМ писать, а во-вторых засовывать все в скобочки, чтобы не происходило всякой херни:
то не происходило двойного инкремента. Короче, макросы - говно. Не выебывайтесь и делайте функции, когда это возможно. Если вы у мамы оптимизаторы, объявляйте их inline
Сам Страуструп писал, что в плюсах макросы ненужны, ибо средства языка позволяют делать все тоже самое, не отрубая программисту ноги.
Но всем насрать
Нет, не всё средства языка позволяют сделать.
Ну и макросы - пока что единственный способ закостылить хоть какую-то "компайл-тайм рефлексию".
Какую бы фичу не взял программист, везде торчат сишные ноги и возможность отстрелить их, заодно с другими частями тела.
Указатели? Но ведь есть умные указатели: unique_ptr, shared_ptr, weak_ptr.
Потоки? std::thread
nullptr, foreach, Rvalue Ref?
Где камни?
Ваш кэп
А std::shared_ptr<void> это баг или фича?
>Указатели? Но ведь есть умные указатели: unique_ptr, shared_ptr, weak_ptr.
>Потоки? std::thread
Большинство из перечисленного не особенности самого языка, а куски его библиотеки.
а что такого странного в этой конструкции, что её необходимо зачислить в одну из этих категорий с негативным оттенком?
вот вам кстати макроговно в плюсовом коде. Почему разрабы нодежс не используют эти хваленые средства языка?
> return
Потому что хвалёные средства не умеют делать выход из внешнего скопа.
Много софта осталось. Платят бабки.
>бейсик
Папрашу не трогать грязными лапами.
К слову бейсика существует где-то 5-6 вореций, начиная от фортраноподобного спагетти-языка и оканчивая тупым клоном сишарпика.
Прочитал как "Парашу не трогать грязными лапами"
По-сути это просто вручную развернутый двоичный поиск. А теперь давайте представим, что нам надо n-ное количество развернутых двоичных поисков для разных размеров массивов и разных типов. Или например вручную развернуть сортировку, чтобы она быстрее сортировала? Средства плюсов могут тут помочь?
Проблема тут фундаментальная, и решать ее надо тоже фундаментально. А именно: необходимо вообще к ***** выкинуть сишкоплюсосинтаксис, шаблоны и прочую ересь, перейти на лиспоскобкосинтаксис, сделать такие средства языка, которые бы позволяли работать с этим AST-скобкопредставлением, и как угодно (полнона по тьюрингу) в компилтайме работать с ним, и чтобы при этом не заниматься парсингом сишного кода, а просто бегать по связным спискам, и иметь возможность как угодно их переделывать. Чтобы например можно было lookup table генерить в процессе компиляции, анроллить хвостовую рекурсию и прочее.
Дык ведь я джва года жду такой езык.