Итак, попробуем же реализовать на нашем любимом языке программирования (Си ) мышление блондинок Напишем программу, которая будет генерировать из предложения "Привет. Как дела?" предлоежение "ПРИВЕТ!!!! КАК ДЕЛА????!!!!!" =)) Для этого нам нужно: 1) преобразовать все к верхнему регистру 2) если предложение вопросительное, дополнить его знаками вопроса 2) дополнить предложение восклицательными знаками Приступим Code: #include <stdio.h> #include <windows.h> // Преобразование к верхнему регистру // Разное для разных алфавитов char touppercase(char c) { if( c >= 'a' && c <= 'z' ) return c + 'A' - 'a'; else if( c >= 'а' && c <= 'я' ) return c + 'А' - 'а'; else return c; } // Преобразование предложения void blonde(char* sentense) { // К верхнему регистру for(char* sp = sentense;*sp;sp++) *sp = touppercase(*sp); // Длина предложения int len = strlen(sentense) + 1; // Если вопросительное - дополняем if( sentense[len - 2] == '?' ) for(int i=0;i<7;i++) { sentense[len + i - 1] = '?'; sentense[len + i] = 0; } // новая длина len = strlen(sentense) + 1; // дополняем "!" for(int i=0;i<7;i++) { sentense[len + i - 1] = '!'; sentense[len + i] = 0; } } int main() { while(1) { char buffer[1024]; // Приглашение. Считываем строчку printf("blonde> "); gets(buffer); // OEM -> ANSI OemToChar( buffer, buffer ); // Обрабатываем blonde(buffer); // ANSI -> OEM CharToOem( buffer, buffer ); // Выводим printf("%s\n", buffer); } return 0; } Все Вывод: Можно даже ICQ-бота написать ) ЗЫ. Оно зохавало мой моск!!!!!!11111 =\\
а теперь о косячгах ну да, стока буква, вместа обычной стандартной, сишной int toupper(int c ); берёшь сишную страку, делаешь её больше, а проверку на выход за пределы не проводишь.
уверен, что она обрабатывает русский язык корректно? я заблаговременно выделил 1024 байта под нее. на большее оно не способно. А что ты хотел от блондинки?))
ага, уверен ну может ты где-то эти 1024 байта и выделил.. а функции то это неизвестно, мог бы и размерчег передавать, а вообще даже в твоём коде кто запрещает пользователю страку набить более чем 1к?
а мне один раз примерно такая попалась #include<iostream.h> #include<windows.h> const char*ru(const char*s) { static char but[256]; CharToOem (s,but); return but; } void main() { int i=0; int n; for (i=0; i>n; i++) cout<<ru("Че ты молчишь???????"); }
а теперь пишем плагин к миранде, который позволяет делать следующее: при вводе /blo text, для text'а делаем замену на бландинистый стиль, и выплювывем обратна(работает как в личке(icq, irc), так и на irc канале, также наводимся на цель. комадой /aim имя_цели которая устанавливает цель на irc канале,и при попытке этого чувачка написать текст, выводит нечто следующее PHP: [01:12] sni40k15430: UnNam3D wanna say: ЧО ТАМА ????!!!!! [01:12] Dr_Check|off: да [01:12] SliP|: -_- [01:12] UnNam3D: про америкосов нах ? [01:12] sni40k15430: UnNam3D wanna say: ПРО АМЕРИКОСОВ НАХ ????!!!!! ну и собственно исходник плагинчега: PHP: <?php function mbot_load() { mb_SelfRegister(MB_EVENT_MSG_OUT|IRC_EVENT_GUI_OUT|IRC_EVENT_GUI_IN, 1); } function ConvertStringToBlondy($msg) { $msg = @strtoupper($msg); $msg = @str_replace(",", "!!!!", $msg); $msg = @str_replace("?", "????!!", $msg); $msg = $msg.'!!!'; return $msg; } function MakeBlonyString($body){ if(@strlen($body) <= 6) return 0; if(@substr($body,0,4) == '/blo'){ $msg = @substr($body,5); $msg = @ConvertStringToBlondy($msg); return $msg; } return 0; } function SetTarget($aim) { if(@strlen($aim) <= 6) return 0; if(@substr($aim,0,4) == '/aim'){ $aim = @substr($aim,5); @mt_setvar('target', $aim, 1); mb_PUMsg('Target setted'); return 1; } return 0; } function ApplyMsg($msg) { $ret = @SetTarget($msg); if($ret === 1) return 1; return @MakeBlonyString($msg); } function mbe_MsgOut($cid,$body) { $msg = @ApplyMsg($body); if($msg === 0) return 0; if($msg === 1) return "drop"; mb_MsgSetBody($msg); return "send"; } function irc_GuiOut($module,$iType,$channel,$pszUID,$text) { $msg = @ApplyMsg($text); if($msg === 0) return 0; if($msg === 1) return "drop"; mb_IrcSetGuiDataOut($iType,null,$pszUID,"$msg"); return 0; } function irc_GuiIn($module,$eventtype,$channel,$nick,$text) { if(@strcmp($eventtype, 64) == 0){ $target = @mt_getvar('target'); if(@strcmp($nick, $target) == 0){ // mb_PUMsg('voshli'); $msg = @ConvertStringToBlondy($text); if($msg === 0) return 0; $msg = $target.' wanna say: '.$msg; $msg = '/MSG '.$channel.' '.$msg; mb_IrcPostMessage($module,$msg); // mb_PUMsg($msg); } return 0; } } ?> да, работает он используя плагин: MBot/MSP (Miranda Scripting Plugin)
Реализация на Perl'e: Code: #!/usr/bin/perl -w sub ads(@){ my $str=shift @_; my $j=rindex $str, '?'; if ($j>0){ # если вопрос добавляем ??? for(my $i=$j;$i<$j+3;$i++) { $str =$str. '?'; } } return ads1($str);} sub ads1(@){ my $str=shift @_; my $j=length($str); #добавляем !!! for(my $i=$j;$i<$j+3;$i++) { $str =$str. '!'; } return $str;} my $str=$ARGV[0]; if ($str== '') {$str="hello Привет, я блондинка";} # Преобразование к верхнему регистру $str=~ tr/а-я,a-z/А-Я,A-Z/; print ads $str;
реализация на хтмл Code: <span style="text-transform:uppercase">я не бладнинка!!! я пацан!!!!!</span>
Ещё универсальную някалку остаётся написать до полного набора... PHP: <?phpwhile(true){echo('Няяяяяяяяяя<br>');}?>