IPB

Здравствуйте, гость ( Вход | Восстановить аккаунт )

> Помогите разобраться в коде
samfisher
сообщение 11.6.2010, 19:50
Сообщение #1


Новенький
*

Группа: Пользователи
Сообщений: 5
Регистрация: 11.6.2010
Пользователь №: 900713



Помогите разобрать программный код программы Искусственный интеллект, время очень поджимает.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, XPMan;

type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Memo1: TMemo;
GroupBox2: TGroupBox;
Edit1: TEdit;
XPManifest1: TXPManifest;
procedure FormCreate(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);

private
{ Private declarations }
public
{ Public declarations }
end;

type
TKeyWord = record
key,answer : string;
end;

const AnswersCount = 310;

var
GeneratedFraza : string='';
Answers : array [1..AnswersCount] of TKeyWord;
Dialog : array [1..20] of string;
Hi : array [1..7] of string;
Form1: TForm1;

implementation

{$R *.dfm}

function FindAnswer(text : string) : boolean;
var
i,count : integer;
ans : array [0..10] of integer;
begin
count:=0;
for i:=1 to AnswersCount do
begin
if Answers[i].key=text then
begin
ans[count]:=i;
inc(count);
end;
end;
if count<>0 then
begin
randomize;
result:=true;
GeneratedFraza:='Кибер разум: '+Answers[ans[random(count)]].answer;
end else result:=false;
end;

procedure LetAnswer(text : string);
var
i,found : integer;
slovo : string;
probel : boolean;
begin
slovo :='';
probel:=false;
found:=0;
for i:=1 to length(text) do
begin

if text[i]=' ' then probel:=true;
if not probel then begin
slovo:=slovo+text[i];
if findanswer(lowercase(slovo)) then inc(found);
end else begin slovo:=''; probel:=false; end;
end;

if found=0 then
form1.Memo1.Lines.Add('Кибер разум: '+dialog[random(20)+1]) else
form1.Memo1.Lines.Add(GeneratedFraza);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
s : Tstringlist;
i,a : integer;
f : string;
done : boolean;
begin

if not fileexists(ExtractFilepath(Application.ExeName)+'Mozgi.brain') then
begin
Showmessage('Ôàéë ñ ìîçãàìè "Mozgi.brain" íå áûë íàéäåí, áåç íåãî ïðîãà ðàáîòàòü íå áóäåò.');
Close;
end;

s:=Tstringlist.Create;
s.LoadFromFile(ExtractFilepath(Application.ExeName)+'Mozgi.brain');

for i:=1 to AnswersCount do
begin
f:=lowercase(s.Strings[i-1]);
answers[i].key:='';
answers[i].answer:=s.ValueFromIndex[i-1];
done:=false;
for a:=1 to length(f) do
begin
if f[a]='=' then done:=true;
if not done then Answers[i].key:=Answers[i].key+f[a];
end;
end;

for i:=1 to 20 do dialog[i]:=s.ValueFromIndex[i+AnswersCount];
for i:=1 to 7 do hi[i]:=s.ValueFromIndex[i+AnswersCount+21];
randomize;
memo1.Lines.Add('Êèáåð ðàçóì: '+hi[1+random(7)]);

end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key=vk_return) and (Edit1.Text<>'') then
begin
Memo1.Lines.Add('Þçåð: '+Edit1.Text);
LetAnswer(lowercase(Edit1.Text));
Edit1.Text:='';
end;
end;
end.

cyberbrain.rar
Перейти в начало страницы
 
+Цитировать сообщение
 
Начать новую тему
Ответов (1 - 12)
Mirima
сообщение 12.6.2010, 7:33
Сообщение #2


Гуру
***

Группа: Пользователи
Сообщений: 937
Регистрация: 1.11.2005
Из: 1 134
Пользователь №: 767



Что значит "разобрать"? Что конкретно нужно-то?


--------------------
у айтишника прежде всего должно быть развито два основных навыка: знание английского и умение гуглить (с) башорг
Перейти в начало страницы
 
+Цитировать сообщение
samfisher
сообщение 12.6.2010, 8:55
Сообщение #3


Новенький
*

Группа: Пользователи
Сообщений: 5
Регистрация: 11.6.2010
Пользователь №: 900713



(Mirima @ 12.6.2010, 7:33) *
Что значит "разобрать"? Что конкретно нужно-то?
разобраться в коде, понять что выполняет та или иная функция и процедура, и как можно поподробнее. В общем препод требует защиты проекта, а времени в обрез, чтобы перебирать учебники и самоучители.

Сообщение отредактировал samfisher - 12.6.2010, 8:55
Перейти в начало страницы
 
+Цитировать сообщение
Пикачу
сообщение 13.6.2010, 0:34
Сообщение #4


Бывал в Бабруйске...
***

Группа: Пользователи
Сообщений: 669
Регистрация: 14.5.2005
Из: Где то рядом...
Пользователь №: 564



Оффтоп, млин, но не удержался...
И потом такие ""Специалисты"" приходят устраиваться на работу, их не берут, а они жалуются: "Я же с дипломом, а вы не принимаете..."


--------------------
Не верь, не бойся, не проси...
Перейти в начало страницы
 
+Цитировать сообщение
samfisher
сообщение 13.6.2010, 0:36
Сообщение #5


Новенький
*

Группа: Пользователи
Сообщений: 5
Регистрация: 11.6.2010
Пользователь №: 900713



(Пикачу @ 13.6.2010, 0:34) *
Оффтоп, млин, но не удержался...
И потом такие ""Специалисты"" приходят устраиваться на работу, их не берут, а они жалуются: "Я же с дипломом, а вы не принимаете..."
спасибо тебе, очень помог.
Перейти в начало страницы
 
+Цитировать сообщение
pr0_zu
сообщение 13.6.2010, 1:19
Сообщение #6


Профессор
***

Группа: Пользователи
Сообщений: 249
Регистрация: 23.5.2007
Пользователь №: 2793



(samfisher @ 13.6.2010, 1:36) *
спасибо тебе, очень помог.
Правильно он говорит, я не говорю за себя, что я во всем шарю,но по крайней мере всякие курсовые и в итоге дипломную выбирал так,чтоб было интересно мне и действительно мог сделать своими силами. И что за тему ты взял "Кибер разум" на Delphi?честно смех.


--------------------
Сложное – это то, что можно сделать немедленно, невозможное займет немного больше времени

Promises, and they still feel all so wasted on myself...
Перейти в начало страницы
 
+Цитировать сообщение
samfisher
сообщение 13.6.2010, 1:57
Сообщение #7


Новенький
*

Группа: Пользователи
Сообщений: 5
Регистрация: 11.6.2010
Пользователь №: 900713



ну так по теме будет че нибудь?И у меня выбора не было, так что пеняйте на систему нашего образования, которая *цензура* ничему не учит, а приходиться во всем разбираться самому как в данный момент.
а по теме вот
//поиск входной строки в массиве заданных фраз типа если введено привет они ищет в базе фраз привет и заводит в перинную GeneratedFraza ответ соотв этой фразе если ответом много то выбератеся случайный. Резльтат функции найдена фраза или нет
function FindAnswer(text : string) : boolean;
var
i,count : integer;
ans : array [0..10] of integer;
begin
count:=0;
for i:=1 to AnswersCount do
begin
if Answers[i].key=text then
begin
ans[count]:=i;
inc(count);
end;
end;
if count<>0 then
begin
randomize;
result:=true;
GeneratedFraza:='Кибер разум: '+Answers[ans[random(count)]].answer;
end else result:=false;
end;

Сообщение отредактировал samfisher - 13.6.2010, 2:03
Перейти в начало страницы
 
+Цитировать сообщение
ЗеЛеноЕ КоПыТо
сообщение 13.6.2010, 14:30
Сообщение #8


Доцент
***

Группа: Пользователи
Сообщений: 130
Регистрация: 20.12.2008
Пользователь №: 5360



http://www.programmersforum.ru/forumdisplay.php?f=2 посмотри там может найдешь че нить


--------------------
И сказал слепой - "посмотрим"
Перейти в начало страницы
 
+Цитировать сообщение
pr0_zu
сообщение 13.6.2010, 18:02
Сообщение #9


Профессор
***

Группа: Пользователи
Сообщений: 249
Регистрация: 23.5.2007
Пользователь №: 2793



Тыц зайди сюда и попроси совет, только не надо писать что ты горишь и т.д. удачи


--------------------
Сложное – это то, что можно сделать немедленно, невозможное займет немного больше времени

Promises, and they still feel all so wasted on myself...
Перейти в начало страницы
 
+Цитировать сообщение
Akapel
сообщение 15.6.2010, 15:27
Сообщение #10


Это не баг, это фича.
***

Группа: Пользователи
Сообщений: 556
Регистрация: 21.4.2007
Из: секса в большом городе
Пользователь №: 2719



Напиши контакты в личку помогу.


--------------------
Пить водку, пиво, коньяк, кофе и курить в один день - это нормально. А вот воду в чайник, нужно обязательно фильтровать, а то для здоровья плохо!
Перейти в начало страницы
 
+Цитировать сообщение
TiLL
сообщение 15.6.2010, 15:32
Сообщение #11


Гуру
***

Группа: Пользователи
Сообщений: 2846
Регистрация: 27.8.2009
Пользователь №: 7816



сам помощи просишь, да еще огрызаешся со всеми и "купи словарь" ставишь. на что расчитываешь...


--------------------
Перейти в начало страницы
 
+Цитировать сообщение
Хищный Мышь
сообщение 8.7.2010, 16:46
Сообщение #12


циник
***

Группа: Пользователи
Сообщений: 891
Регистрация: 12.8.2004
Пользователь №: 182



обалдеть smile.gif самый тупой чат-бот которого я видел smile.gif
Особенно убила фраза из месэджа: Showmessage('Файл с мозгами "Mozgi.brain" не был найден, без него прога работать не будет.'); biggrin.gif
Автору - просто был в отпуске (опять заграницу мотался), поэтому не написал. Программа - типичный (примитивный) бот (автоболтальщик), причем без автообучения. Если будет на днях время - подробно опишу что тут и как делается.

Сообщение отредактировал Хищный Мышь - 8.7.2010, 16:51


--------------------
Добро всегда побеждает зло... Поэтому кто победил - тот добрый.
Я.Интернетометр. Измерьте вашу скорость.
Перейти в начало страницы
 
+Цитировать сообщение
samfisher
сообщение 15.8.2010, 12:28
Сообщение #13


Новенький
*

Группа: Пользователи
Сообщений: 5
Регистрация: 11.6.2010
Пользователь №: 900713



закрывайте тему.
Перейти в начало страницы
 
+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Сейчас: 11.11.2026, 20:00