- 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;
}
3_dar 19.04.2016 18:09 # +2
Koncord 19.04.2016 18:11 # 0
guest 19.04.2016 18:15 # 0
Koncord 19.04.2016 18:20 # 0
guest 19.04.2016 18:24 # +3
это stdio.h ващето
стандартная, типа, библиотека
inkanus-gray 19.04.2016 19:16 # +2
Хотя в Windows 3.x такой функции нет. В третьих форточках, правда, и консоли нет, так что придётся искать стороннюю реализацию консоли. Вот беда...
mittorn 19.04.2016 21:39 # 0
guest 19.04.2016 21:43 # +3
Блин, да в те времена 98% программ были досовыми и работали с command.com
guest 19.04.2016 21:43 # 0
Тэпэшка.
inkanus-gray 19.04.2016 22:32 # +3
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.
guest 19.04.2016 22:35 # +1
был такой, да?
вот прямо с кольцами защиты, и при этом 16 бит?
>>либо в виртуальной машине ДОСа
Virtual 8086 mode был только для protected mode же
bormand 19.04.2016 22:43 # +1
google: 80286
guest 19.04.2016 22:44 # 0
но так ведь это никто не использовал
там и виртуальной памяти-то не было
inkanus-gray 19.04.2016 23:00 # +2
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.
guesto 19.04.2016 23:02 # 0
о, сколько нам открытий чудных
inkanus-gray 19.04.2016 23:16 # +2
И Интел — сын ошибок трудных,
И Борланд — Парадоксов друг.
Да, я пытаюсь вернуть 97-й.
guesto 19.04.2016 23:20 # +1
inkanus-gray 19.04.2016 23:23 # +1
guesto 19.04.2016 23:26 # +1
виртуалкой с dos 6.22?)
есть мнение что современные виртуалки не полностью реализиуют все спецификации IBM PC, и может что-то не заработать. Ну там наверняка они криво эмулируют контроллер клавиатуры i8042 или там прерывание BIOS не умеет сказать сколько дисководов в системе
dxd 20.04.2016 15:19 # +2
inkanus-gray 19.04.2016 22:44 # 0
Было два типа DPMI: 16-битный (например, встроенный в Win16 и борландовский RTM) и 32-битный (а их было целое море, например, DOS4GW).
> Virtual 8086 mode был только для protected mode же
Досовскую программу, рассчитанную на реальный режим, можно было запускать как в реальном режиме, так и в Virtual 8086 из-под защищённого. Редкую программу нельзя было запустить из виртуального режима (к таким исключениям относилось либо совсем старьё, написанное во времена 8086/8088, либо откровенный говнокод).
guest 19.04.2016 22:45 # 0
просто ни однасовременная ось (ни linux, ни фря ни Winnt) сегменты-то не использует вроде
а на x64 их и вовсе выпилилли
bormand 19.04.2016 22:54 # 0
Все используют. Куда от них денешься. Просто они настроены под flat режим и ты их не замечаешь. Даже на x64 от них рудименты остались...
guest 19.04.2016 22:55 # 0
Именно потому и выпилили)
inkanus-gray 19.04.2016 22:59 # +1
В те нелёгкие времена приходилось создавать сегменты для 16-битных программ, а в Windows 95/98 (и в OS/2) ещё и некоторые драйвера были 16-битными.
В Win32 регистр FS указывает на сегмент с базой, отличной от других сегментных регистров. Т. е. даже в чистой 32-битной среде Винда создавала специальный сегмент:
https://en.wikipedia.org/wiki/Win32_Thread_Information_Block
guest 23.04.2016 14:55 # 0
inkanus-gray 23.04.2016 16:02 # +1
Тем не менее, консоль в Win16 была (и даже могла переключаться между чёрным окошком и полным экраном), но доступна она была только для досовских программ. Для приложений Windows у неё не было «публичного интерфейса».
inkanus-gray 23.04.2016 16:11 # 0
А вот у Windows 95 и NT, имеющих полноценную текстовую консоль, успех был. Неужели текстовая консоль оказалась важнее гуя?
guest 23.04.2016 16:17 # 0
Был коммандком 16 bit
inkanus-gray 23.04.2016 16:17 # 0
guest 19.04.2016 18:33 # +6
guest 19.04.2016 18:35 # 0
Steve_Brown 19.04.2016 19:32 # +8
guest 19.04.2016 19:33 # 0
>>Си
bormand 19.04.2016 19:35 # 0
guest 19.04.2016 19:42 # 0
или там в stdbool нахуивертили?
bormand 19.04.2016 19:45 # +2
wvxvw 19.04.2016 21:49 # 0
wvxvw 19.04.2016 21:59 # +1
guest 19.04.2016 22:47 # +2
kegdan 19.04.2016 23:42 # 0
Не благодари
guesto 19.04.2016 23:50 # +1
Не благодари
kegdan 19.04.2016 23:52 # 0
guesto 19.04.2016 23:57 # 0
я неправильно задание понял
Antervis 20.04.2016 09:03 # +1
kegdan 20.04.2016 09:33 # 0
guesto 25.04.2016 06:20 # 0
1024-- 20.04.2016 10:08 # 0
Описание и процесс говнизации - напитоне http://pastebin.com/jjTrRQq7
* Всё, что не цифра - то буква
kegdan 20.04.2016 10:40 # +1
1024-- 20.04.2016 13:33 # +2
kegdan 20.04.2016 13:39 # +1
1024-- 20.04.2016 13:44 # +2
kegdan 22.04.2016 13:35 # 0
gost 20.04.2016 12:56 # 0
gost 20.04.2016 12:59 # 0
kegdan 20.04.2016 13:07 # 0
1024-- 20.04.2016 13:36 # 0
Во-вторых,
kegdan 20.04.2016 13:37 # +1
Antervis 21.04.2016 10:05 # 0
Длину строки как бы надо проверять
kegdan 21.04.2016 10:46 # 0
нахуя проверять условия задачи?
Antervis 21.04.2016 14:02 # 0
такого варианта не было
kegdan 21.04.2016 14:13 # 0
kegdan 20.04.2016 13:18 # +1
gost 20.04.2016 14:15 # 0
kegdan 20.04.2016 14:33 # 0
gost 20.04.2016 14:57 # 0
Koncord 21.04.2016 18:09 # 0
ласт вариант :D
1024-- 21.04.2016 19:00 # +3
bormand 21.04.2016 19:07 # +3
1024-- 21.04.2016 19:17 # +1
bormand 21.04.2016 19:20 # +3
Koncord 21.04.2016 19:13 # 0
1024-- 21.04.2016 19:23 # +3
Глядишь, и уважение будет, и зарплата хорошая, и жизнь наладится...
Koncord 21.04.2016 19:09 # 0
1024-- 21.04.2016 19:25 # 0
Вот это отличная находка. Когда читаешь, просто хренеешь. Думаешь "ну, когда же оно на краях глюканёт?"
bormand 21.04.2016 19:31 # +1
defecate-plusplus 21.04.2016 19:35 # +1
bormand 21.04.2016 19:40 # +4
1024-- 21.04.2016 20:22 # +6
3.14159265 21.04.2016 20:31 # +4
inkanus-gray 22.04.2016 00:43 # +3
Экономия на спичках в духе олимпиадных задач.
guest 23.04.2016 16:38 # −1
kegdan 21.04.2016 22:33 # +3
1024-- 21.04.2016 23:12 # +2
> str[0]
> (l%2)==1
Говорили же бородатые дяди "Выбирай язык под задачу". Это не херня, это херняша.
Перепишите на пацанскую сишку или приходите на педесрачу.
kegdan 22.04.2016 00:04 # +3
Осторожно! Пиздец!
https://ideone.com/3fWW1w
kegdan 22.04.2016 00:15 # +2
https://ideone.com/N4vxCJ
bormand 22.04.2016 18:19 # 0
kegdan 22.04.2016 18:33 # +4
https://ideone.com/wVdzs6
bormand 22.04.2016 18:20 # +2
Компилятор подумал: "посчитаю-ка я для начала p = getchar() > '9', а затем сделаю n = p. Теперь надо посчитать их xor - но они же одинаковы. Значит в результате будет 0. Заменим всю эту херню на a = 0".
kegdan 22.04.2016 18:36 # 0
bormand 22.04.2016 18:37 # +3
kegdan 22.04.2016 18:40 # +5
Что-то меня начали с самими продвинутыми программистами говнокода сравнивать, к чему бы это?
guest 22.04.2016 22:52 # 0
j123123 23.04.2016 13:45 # 0
во-первых макросы надо КАПСОМ писать, а во-вторых засовывать все в скобочки, чтобы не происходило всякой херни:
j123123 23.04.2016 13:48 # +2
то не происходило двойного инкремента. Короче, макросы - говно. Не выебывайтесь и делайте функции, когда это возможно. Если вы у мамы оптимизаторы, объявляйте их inline
Steve_Brown 23.04.2016 14:29 # +1
gost 23.04.2016 14:32 # +3
codemonkey 24.04.2016 09:59 # 0
kegdan 24.04.2016 10:17 # +3
Сам Страуструп писал, что в плюсах макросы ненужны, ибо средства языка позволяют делать все тоже самое, не отрубая программисту ноги.
Но всем насрать
1024-- 24.04.2016 11:10 # 0
LispGovno 24.04.2016 11:30 # 0
bormand 24.04.2016 11:53 # 0
j123123 24.04.2016 19:46 # −3
roman-kashitsyn 24.04.2016 19:59 # 0
Нет, не всё средства языка позволяют сделать.
dxd 25.04.2016 08:57 # +2
Antervis 25.04.2016 11:09 # 0
roman-kashitsyn 25.04.2016 11:16 # 0
Ну и макросы - пока что единственный способ закостылить хоть какую-то "компайл-тайм рефлексию".
3.14159265 25.04.2016 11:55 # +5
Какую бы фичу не взял программист, везде торчат сишные ноги и возможность отстрелить их, заодно с другими частями тела.
Koncord 25.04.2016 22:13 # +1
Указатели? Но ведь есть умные указатели: unique_ptr, shared_ptr, weak_ptr.
Потоки? std::thread
nullptr, foreach, Rvalue Ref?
Где камни?
fajes_rown 25.04.2016 22:55 # 0
Ваш кэп
3.14159265 26.04.2016 13:46 # 0
А std::shared_ptr<void> это баг или фича?
>Указатели? Но ведь есть умные указатели: unique_ptr, shared_ptr, weak_ptr.
>Потоки? std::thread
Большинство из перечисленного не особенности самого языка, а куски его библиотеки.
defecate-plusplus 26.04.2016 14:01 # 0
а что такого странного в этой конструкции, что её необходимо зачислить в одну из этих категорий с негативным оттенком?
TarasB 26.04.2016 14:02 # 0
defecate-plusplus 26.04.2016 14:04 # 0
j123123 26.04.2016 12:25 # 0
вот вам кстати макроговно в плюсовом коде. Почему разрабы нодежс не используют эти хваленые средства языка?
roman-kashitsyn 26.04.2016 12:37 # 0
> return
Потому что хвалёные средства не умеют делать выход из внешнего скопа.
j123123 26.04.2016 13:13 # 0
kegdan 26.04.2016 13:24 # 0
j123123 26.04.2016 14:04 # 0
Koncord 27.04.2016 11:08 # +1
dxd 27.04.2016 11:34 # 0
3.14159265 27.04.2016 14:08 # +3
Много софта осталось. Платят бабки.
>бейсик
Папрашу не трогать грязными лапами.
К слову бейсика существует где-то 5-6 вореций, начиная от фортраноподобного спагетти-языка и оканчивая тупым клоном сишарпика.
j123123 27.04.2016 20:18 # +6
Прочитал как "Парашу не трогать грязными лапами"
j123123 27.04.2016 14:27 # +1
Koncord 27.04.2016 19:36 # 0
bormand 27.04.2016 19:53 # +2
Koncord 27.04.2016 20:13 # 0
j123123 26.04.2016 14:01 # +5
По-сути это просто вручную развернутый двоичный поиск. А теперь давайте представим, что нам надо n-ное количество развернутых двоичных поисков для разных размеров массивов и разных типов. Или например вручную развернуть сортировку, чтобы она быстрее сортировала? Средства плюсов могут тут помочь?
Проблема тут фундаментальная, и решать ее надо тоже фундаментально. А именно: необходимо вообще к ***** выкинуть сишкоплюсосинтаксис, шаблоны и прочую ересь, перейти на лиспоскобкосинтаксис, сделать такие средства языка, которые бы позволяли работать с этим AST-скобкопредставлением, и как угодно (полнона по тьюрингу) в компилтайме работать с ним, и чтобы при этом не заниматься парсингом сишного кода, а просто бегать по связным спискам, и иметь возможность как угодно их переделывать. Чтобы например можно было lookup table генерить в процессе компиляции, анроллить хвостовую рекурсию и прочее.
TarasB 26.04.2016 14:02 # +3
roman-kashitsyn 26.04.2016 14:13 # +1
Дык ведь я джва года жду такой езык.