- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
#include <fstream>
#include <string.h>
#include <stdlib.h>
#include <iostream>
typedef unsigned int uint;
std::string sMsg;
int GetShift()
{
int iResult = 0;
for(uint i = 0; i < sMsg.size(); i++)
{
if(!isalpha(sMsg[i])) continue;
if(isupper(sMsg[i]))
{
iResult = int(sMsg[i]) - int('A');
break;
}
else if(islower(sMsg[i]))
{
iResult = int(sMsg[i]) - int('a');
break;
}
}
return iResult;
}
int Pos(const char* _Str, char _Ch)
{
int i = 0;
while(*_Str)
{
if(*_Str == _Ch)
{
return i;
}
_Str++;
i++;
}
return -1;
}
int main()
{
std::ifstream fin("input.txt");
std::ofstream fout("output.txt");
std::getline(fin, sMsg);
int iShift = GetShift();
if(iShift == 0)
{
fout << sMsg;
}
else
{
char* szOriginal = (char*)malloc(100);
strcpy(szOriginal, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
char* szShift = (char*)malloc(100);
strcpy(szShift, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ");
szShift += iShift;
char* szOriginalL = (char*)malloc(100);
strcpy(szOriginalL, "abcdefghijklmnopqrstuvwxyz");
char* szShiftL = (char*)malloc(100);
strcpy(szShiftL, "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
szShiftL += iShift;
for(int i = 0; i < sMsg.size(); i++)
{
if(!isalpha(sMsg[i]))
fout << sMsg[i];
else
{
if(isupper(sMsg[i]))
{
int iPos = Pos(szShift, sMsg[i]);
fout << *(szOriginal + iPos);
}
else if(islower(sMsg[i]))
{
int iPos = Pos(szShiftL, sMsg[i]);
fout << *(szOriginalL + iPos);
}
}
}
free(szOriginal);
free(szShift);
free(szOriginalL);
free(szShiftL);
}
fin.close();
fout.close();
return 0;
}
В рамках подготовки к прошедшей областной олимпиаде по информатике среди школьников Минской области решал задачи. Данный говнокод решение задачи про шифр цезаря (данная задача была на областной олимпиаде в 2013 - 2014 учебном году).
Задача: расшифровать строку, которая зашифрована шифром Цезаря, так, чтобы полученная расшифровка была минимальна лексикографически.
Зашифрованная строка находится в файле input.txt, результат надо было вывести output.txt
bormand 16.01.2015 20:38 # −11
> szShift += iShift;
> free(szShift);
Пиздец.
inkanus-gray 16.01.2015 21:12 # 0
guest 17.01.2015 14:35 # −1
Анонимус 16.01.2015 21:13 # +1
bormand 16.01.2015 21:22 # −11
Всего лишь UB.
1024-- 16.01.2015 21:20 # +1
Хранил я какую-то метаинформацию, а после неё начиналось что-то полезное. Я сдвигал указатель туда, где полезное, хранил и передавал его нужным функциям, потом удалял как честный человек.
И долго думал, почему программа умирает.
bormand 16.01.2015 21:23 # −10
Анонимус 16.01.2015 21:23 # 0
Хорошо напверное пользоваться только тем куском памяти, который ты сам создал. Создал -- передал куда надо -- там его заполнили --- ты его прочитал -- очистил. И всё.
bormand 16.01.2015 21:28 # −10
Функция, противоположная его запиливанию же. Инкапсуляция, все дела:
inkanus-gray 16.01.2015 21:37 # 0
TarasB 21.01.2015 22:37 # 0
LispGovno 21.01.2015 22:38 # +1
bormand 21.01.2015 23:06 # −10
bormand 16.01.2015 21:35 # −10
laMer007 21.01.2015 18:16 # 0
bormand 21.01.2015 18:35 # −10
this?
P.S. А, блин, /RTC cannot be used with compiler optimizations ;(
laMer007 21.01.2015 18:46 # 0
Вообще было бы офигенно, если из одного потока в другой поток нельзя было указатели передавать на объекты в стеке и система била сразу в глаз с разворота.
laMer007 21.01.2015 18:38 # +1
Ну и может все что ниже в стеке - заполнять на какую-то длину каким-нибудь специальным значением 4 кб например до цикла не создающего временные объекты, а после этого цикла проверять, что они не изменились.
Потом между временными объектами вставлять объекты упакованные с выравниванием 1 байт, забитые специальным значением например на 1 кб, а в деструкторе которых сверять не потерли ли их.
Как проверить целостность фреймов в стеке? Возвратных адресов из функций? Адресов обработчиков SEH?
bormand 21.01.2015 19:02 # −10
Не спасёт от переполненного буфера, т.к. все эти параметры окажутся незадетыми, запорются только данные да адрес возврата. Вот вторая идея, про объекты, заполненные специальным значением, вроде бы поинтересней.
> из одного потока в другой поток нельзя было указатели передавать
А вот от соседнего треда, продолжающего насиловать труп, увы, ничего не спасёт. Он же это может сделать намного позже. Походу придётся искать все места, где берутся адреса локальных переменных, и читать код тех функций, куда их передают... Ибо сохранение указателя на локальную переменную - однозначное ССЗБ.
laMer007 21.01.2015 19:22 # 0
Ну может какие анализаторы кода заюзать? Какие есть годные? Желательно чтобы без возни и "по русски"-бесплатно или бесплатно.
Неужели нет ни у кого кулстори как он побеждал порчи памяти?
laMer007 21.01.2015 19:45 # 0
laMer007 21.01.2015 20:30 # 0
http://www.gamedev.ru/flame/forum/?id=197490
LispGovno 21.01.2015 20:40 # 0
defecate-plusplus 21.01.2015 20:45 # 0
LispGovno 21.01.2015 20:46 # 0
3.14159265 20.01.2015 03:05 # 0
И как, выиграл?
Кресты, это же как игра с шулером UBшными картами — без шансов.
1024-- 21.01.2015 17:22 # +1
3.14159265 21.01.2015 19:03 # 0
Это как?
1024-- 21.01.2015 19:37 # +2
laMer007 21.01.2015 19:41 # +2
bormand 21.01.2015 19:46 # −10
laMer007 21.01.2015 19:48 # +1
3.14159265 21.01.2015 19:53 # +1
А какая она, крестологика? В каком аспекте они близки:?
laMer007 21.01.2015 20:05 # 0
1024-- 21.01.2015 20:08 # +1
Шаблоны, шаблоны шаблонов, конструкторы типов, универсальность, подставим в параметры абстрактную питушню и получим генератор генераторов для нашего массива, параметризованного множеством интов и царской керосиновой лампой. template<T> class X: public T {}; Таинственные символы << и >> возможность >=> их ++ переопределения. Всё гениальное уже придумано до нас. std::vector std::transform Data.List.permutations boost::spirit Prelude.flip. Универсальность и красота, универсальность и красота, универсальность и где мой мозг?
bormand 21.01.2015 20:31 # −10
... разочаруюсь в крестах и хаскеле, сопьюсь, захиккую и буду смотреть аниме, в котором милые девочки делают милые вещи.
Шутка (но в каждой шутке есть доля правды).
Лучше D покури. Там метапрограмминг поинтересней замутили. Минус - D для продакшена пока рискованно юзать (но тебе ведь не для продакшена, а для души?).
LispGovno 21.01.2015 20:38 # 0
Уже. Вот например я сейчас смотрю Блич. Говно, а что делать. Милых девочек нет. Не в этом аниме, не так, да и не нужны.
bormand 21.01.2015 20:55 # −10
Блин, как вы вообще смотрите эти длинносенёны? Мне 64 серии алхимика казались чем-то заоблачным, еле-еле решился на него, хоть и годнота...
LispGovno 21.01.2015 21:02 # 0
3.14159265 21.01.2015 21:03 # 0
Тоже верно. Кстати хотел об этом сказать, уж лучше читать хаскел чем втыкать аниме или сраться в интернете за политику, например...
Да, я просто его не осилил.
LispGovno 21.01.2015 21:20 # 0
LispGovno 21.01.2015 21:25 # 0
bormand 21.01.2015 23:06 # −10
Неси свой крест, бро... А у нас контора последние годы перекатывается в веб, причём пыховский и пёрловский, что меня печалит. Если планируемый проектик на QML не получит зелёный свет - уйду искать счастья в больших городах, надоело всё.
defecate-plusplus 21.01.2015 23:11 # +2
LispGovno 21.01.2015 23:18 # 0
Он всех пропагандирует. Прямо церковь у него
В больших городах все также. Если у тебя опыт на крестах, то и будешь ты нести свой крест.
а кмл каким боком к вебу? так что зеленого не будет
bormand 21.01.2015 23:48 # −10
В нашем усть-зажопинске одна годная программерская контора. Во всех остальных местах придётся работать вспомогательным персоналом, на досуге заправляя картриджи. Сам понимаешь, без запасного аэродрома крест, плавно превращающийся в пых, нести не комильфо. Если бы не тёплая ламповая атмосфера и более-менее интересные проекты - давно бы свалил.
> кмл каким боком к вебу
Никаким, там планировался линух и C++/QML прога. Сейчас всё от заказчика зависит - если хуй окончательно не положат из-за крымнаша и его последствий, то будем пилить.
LispGovno 21.01.2015 23:53 # 0
bormand 22.01.2015 00:05 # −10
Так я и сказал ;)
LispGovno 22.01.2015 00:30 # 0
bormand 22.01.2015 00:33 # −10
defecate-plusplus 22.01.2015 00:19 # 0
хе-хе
ну это уж как устроиться
на днях приходил собеседоваться парень, который всё собеседование жутко гордился тем, что 6 лет назад при институте писал ненужно на MFC, и т.к. у него аж 4 года крестоопыта, ему раз плюнуть сделать ынтерпрайз как на asp.net mvc, так и на j2ee.. ну или на ассемблере, если вдруг надо
LispGovno 22.01.2015 00:31 # 0
bormand 22.01.2015 00:33 # −10
Взяли?
defecate-plusplus 22.01.2015 00:45 # +2
нельзя делать публичные ложные выводы о своей компетентности и потенциале из своего сомнительного опыта на крестах,
нельзя претендовать на позицию сеньора-архитектора, плавая в ответах, связанных с архитектурой, не понюхав большей половины базовых ынтерпрайзных вещей,
нельзя хвалиться тем, что за последние 4 месяца без работы он вместо того, чтобы читать книжки по программированию, читал книжки про торговлю на форексе
да и в 31 год его учить уже новому бессмысленно, врядли будут горящие глаза и осознание, что до потолка компетенции ещё далеко, с таким настроением-то
в общем, скорее всего не MFC же виновато
или...
bormand 22.01.2015 00:43 # −10
- Конечно, я на этом MFC 6 лет назад при институте кодил!
defecate-plusplus 22.01.2015 01:15 # +1
3.14159265 21.01.2015 21:40 # +1
Ну появилась же потреблядская шняга типа Siri
https://www.youtube.com/watch?v=B3ygkiXEurY
Чтоб всякую херню проще покупать.
>И вообще разработка компов 5го поколения загнулась и искусственного интеллекта не будет.
>И даже надежда ИИ: закон мура и масштабируемость многоядерности соснула пополной
А в 60х-70х была эйфория, когда появились нейронные сети, думали если построить достаточно большую сеть, с мириадами перцептронов, она станет разумной (ну по аналогии с мозгом).
bormand 21.01.2015 21:53 # −10
Закон Амдала неумолим...
> и вообще плохо внедряются новые технологии
Да что тут удивительного? Они всё существование человечества плохо внедрялись, если не требовались для выживания, войны или получения удовольствия.
guest6 09.04.2023 16:09 # −10
это правда
LispGovno 21.01.2015 21:10 # 0
1024-- 21.01.2015 20:41 # 0
Уж лучше царское аниме смотреть, чем быть заедушным питушком.
> но тебе ведь не для продакшена, а для души?
Это да. Вот только лень что-то новое изучать.
LispGovno 21.01.2015 20:45 # +2
bormand 21.01.2015 20:58 # −10
1024-- 21.01.2015 21:04 # 0
Вот-вот, разве LispGovno запомнил из хаскеля только боль и страдания? Явно что-то хорошее в его жизни было.
3.14159265 21.01.2015 21:06 # 0
Кстати концепты хачкеля можно смело красть, не изучая при этом ебанутого языка.
LispGovno 21.01.2015 21:06 # 0
3.14159265 21.01.2015 21:36 # +3
А вы чё думаете, я троллил всё это время?
3.14159265 21.01.2015 20:59 # +3
Га-га-га. Бляяяяяяя.
[успокаивается]
Уважаю за честность.
Вот так оно в жизни и бывает: учил Haskell, а в суровой реальности платят за MFC.Ну ничё концепты идеи еще пригодятся.
bormand 21.01.2015 21:01 # −10
LispGovno 21.01.2015 21:04 # 0
bormand 21.01.2015 23:13 # −10
Ну что-то тебя совсем накрыло в этом году... Ты для себя реши, нужна ли тян тебе или же она нужна окружающим, которые тебя доябывают в духе "28 лет, а не женился" и т.п. Если тебе - ставь цель и добивайся. Если только окружающим - смело ложи на их разговоры хуй и не принимай близко к сердцу. А самокопания и сожаления о прошлом, имхо, ни к чему.
LispGovno 21.01.2015 23:15 # +2
Окружающим вроде, но посмеиваются, да. А родители так вообще негодуют. Старик, а не женат.
3.14159265 21.01.2015 21:54 # 0
Я всегда говорил что это блядство. Пока я не смогу нормально это >=> гуглить, толку не будет.
>получим генератор генераторов для нашего массива
Вообще в 90% слишком повышенная абстрактность вредна. Люди начинают сходить с ума, городят слишком обобщённые и слишком непонятные говнорешения, забывают о KISS.
Я понимаю что иногда это надо, но кресты провоцируют писать заумь.
bormand 21.01.2015 21:56 # −10
https://www.haskell.org/hoogle/ - нормально ищет по доке. Лучше, чем ничего.
3.14159265 21.01.2015 22:13 # +1
А для крестов такого нету? А. Я совсем забыл что там ебанутые значки еще и контекстозависимы.
bormand 21.01.2015 22:17 # −10
> контекстозависимы
... а как раз вот в этом. Так что поиск по значку не особо поможет. Там нужно добывать маны по типам аргументов, и искать в них смысл этих значков...
3.14159265 21.01.2015 22:26 # 0
А есть свежая? С [] лямбдами и прочей херней.
Просто почти все значки сишки/крестов уже стандарт де-факто и так или иначе юзаются в других языках.
А в хаскеле видимо чего-то посуровее курили.
bormand 21.01.2015 22:31 # −10
А там кроме лямбды ([](){} и []{}) и initializer list (std::vector<int> a {1,2,3,4,5}) никаких значков и не добавляли. Ну разве что сделали синтаксис еще более контекстнозависимым, и теперь можно писать std::vector<std::vector<int>> вместо std::vector<std::vector<int> > (раньше с оператором путало, если пробел забыть).
3.14159265 21.01.2015 22:59 # 0
А ну так то всё известные вещи. Спрашиваю мож проебал чего, кресты они ведь не перестают удивлять (скорее безумными комбинациями существующих синтаксических элементов).
roman-kashitsyn 22.01.2015 09:57 # +1
roman-kashitsyn 22.01.2015 10:56 # 0