ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Мышление блондинок
  #1  
Старый 27.02.2007, 00:06
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию Мышление блондинок

Итак, попробуем же реализовать на нашем любимом языке программирования (Си ) мышление блондинок
Напишем программу, которая будет генерировать из предложения "Привет. Как дела?" предлоежение "ПРИВЕТ!!!! КАК ДЕЛА????!!!!!" =))
Для этого нам нужно:
1) преобразовать все к верхнему регистру
2) если предложение вопросительное, дополнить его знаками вопроса
2) дополнить предложение восклицательными знаками
Приступим
Код:
#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;
}
Все
Вывод:
Цитата:
blonde> Привет, я блондинка
ПРИВЕТ, Я БЛОНДИНКА!!!!!!!
blonde> Как дела?
КАК ДЕЛА????????!!!!!!!
blonde>
Можно даже ICQ-бота написать )


ЗЫ. Оно зохавало мой моск!!!!!!11111 =\\
 
Ответить с цитированием

  #2  
Старый 27.02.2007, 00:09
Abra
Постоянный
Регистрация: 17.09.2005
Сообщений: 375
Провел на форуме:
993362

Репутация: 175
По умолчанию

давай не бот а модик под аську!
или веб оболочку хотя бы.
буду через нее с некоторыми общаться.
 
Ответить с цитированием

  #3  
Старый 27.02.2007, 00:13
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

Напишу веб оболочку )) Общацо
 
Ответить с цитированием

  #4  
Старый 27.02.2007, 00:16
sni4ok
Участник форума
Регистрация: 04.11.2006
Сообщений: 150
Провел на форуме:
1174659

Репутация: 175
Отправить сообщение для sni4ok с помощью ICQ
По умолчанию

а теперь о косячгах

Цитата:
Сообщение от _Great_  
// Преобразование к верхнему регистру
// Разное для разных алфавитов
char touppercase(char c)
{
if( c >= 'a' && c <= 'z' )
return c + 'A' - 'a';
else if( c >= 'а' && c <= 'я' )
return c + 'А' - 'а';
else
return c;
}
ну да, стока буква, вместа обычной стандартной, сишной int toupper(int c );

Цитата:
// Преобразование предложения
void blonde(char* sentense)
берёшь сишную страку, делаешь её больше, а проверку на выход за пределы не проводишь.
 
Ответить с цитированием

  #5  
Старый 27.02.2007, 00:20
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

Цитата:
ну да, стока буква, вместа обычной стандартной, сишной int toupper(int c );
уверен, что она обрабатывает русский язык корректно?

Цитата:
берёшь сишную страку, делаешь её больше, а проверку на выход за пределы не проводишь.
я заблаговременно выделил 1024 байта под нее.
на большее оно не способно. А что ты хотел от блондинки?))
 
Ответить с цитированием

  #6  
Старый 27.02.2007, 00:29
sni4ok
Участник форума
Регистрация: 04.11.2006
Сообщений: 150
Провел на форуме:
1174659

Репутация: 175
Отправить сообщение для sni4ok с помощью ICQ
По умолчанию

Цитата:
Сообщение от _Great_  
уверен, что она обрабатывает русский язык корректно?
ага, уверен

Цитата:
я заблаговременно выделил 1024 байта под нее.
на большее оно не способно. А что ты хотел от блондинки?))
ну может ты где-то эти 1024 байта и выделил.. а функции то это неизвестно, мог бы и размерчег передавать,
а вообще даже в твоём коде кто запрещает пользователю страку набить более чем 1к?
 
Ответить с цитированием

  #7  
Старый 27.02.2007, 00:33
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

Да че пристал, дай постебаться )))
 
Ответить с цитированием

  #8  
Старый 27.02.2007, 00:49
DRON-ANARCHY
Отец порядка
Регистрация: 04.03.2005
Сообщений: 1,007
Провел на форуме:
1204641

Репутация: 412


Отправить сообщение для DRON-ANARCHY с помощью ICQ
По умолчанию

на php все выйдет куда короче....
 
Ответить с цитированием

  #9  
Старый 27.02.2007, 00:49
_Pantera_
Участник форума
Регистрация: 06.10.2006
Сообщений: 226
Провел на форуме:
3025546

Репутация: 1327
Отправить сообщение для _Pantera_ с помощью ICQ
По умолчанию

а мне один раз примерно такая попалась

#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("Че ты молчишь???????");

}
 
Ответить с цитированием

  #10  
Старый 27.02.2007, 02:18
sni4ok
Участник форума
Регистрация: 04.11.2006
Сообщений: 150
Провел на форуме:
1174659

Репутация: 175
Отправить сообщение для sni4ok с помощью ICQ
По умолчанию

Цитата:
Сообщение от _Great_  
Итак, попробуем же реализовать на нашем любимом языке программирования (Си )
а теперь пишем плагин к миранде, который позволяет делать следующее:
при вводе /blo text, для text'а делаем замену на бландинистый стиль, и выплювывем обратна(работает как в личке(icq, irc), так и на irc канале, также наводимся на цель.
комадой
/aim имя_цели
которая устанавливает цель на irc канале,и при попытке этого чувачка написать текст, выводит нечто следующее
PHP код:
    [01:12]    sni40k15430UnNam3D wanna sayЧО ТАМА ????!!!!!
    [
01:12]    Dr_Check|offда
    
[01:12]    SliP|: -_-
    [
01:12]    UnNam3Dпро америкосов нах ?
    [
01:12]    sni40k15430UnNam3D wanna sayПРО АМЕРИКОСОВ НАХ ????!!!!! 
ну и собственно исходник плагинчега:

PHP код:

<?php



function mbot_load()
{
    
mb_SelfRegister(MB_EVENT_MSG_OUT|IRC_EVENT_GUI_OUT|IRC_EVENT_GUI_IN1);
}

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'$aim1);
        
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($eventtype64) == 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)

Последний раз редактировалось sni4ok; 27.02.2007 в 02:29..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клавиатура для блондинок censored! Болталка 7 27.02.2007 14:39



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ