Здравствуйте, Гость
Суббота, 25.11.2017, 13:33
Главная Главная страница форума Регистрация Вход
Новые сообщения Участники форума Правила форума Поиск
Страница 1 из 11
Модератор форума: stalker, Ekz 
Форум » Все о Delphi » Начинающим » Помогите разобраться в программном коде (delphi)
Помогите разобраться в программном коде
rudenkoДата: Суббота, 12.06.2010, 00:39 | Сообщение # 1
Ранг 1
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Статус: Offline
Помогите разобраться программном коде программы Искусственный интеллект, время очень поджимает.

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(168Kb)
 
DigyДата: Суббота, 12.06.2010, 11:19 | Сообщение # 2
Ранг 3
Группа: Проверенные
Сообщений: 71
Награды: 0
Репутация: 1
Статус: Offline
приблизительно смысл понятен, но, думаю, проще будет с 0 написать такое, чем в чужом разбираться

><))'>
 
rudenkoДата: Суббота, 12.06.2010, 14:51 | Сообщение # 3
Ранг 1
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Статус: Offline
мне не проще, мне проще чтобы вы помогли мне разобраться в коде, понять что выполняет та или иная функция и процедура, и как можно поподробнее. В общем препод требует защиты проекта, а времени в обрез, чтобы перебирать учебники и самоучители.
 
AdminДата: Воскресенье, 13.06.2010, 22:11 | Сообщение # 4
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
А раньше чем думал? Конец семестра как обычно пришел неожиданно? biggrin
Ты бы хоть описал, что программа делать должна... Было бы проще.

procedure TForm1.FormCreate(Sender: TObject);
Это обработчик создания формы.Код который выполняется при создании формы. Там происходит чтение файла.

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
Это функция обработчика которая выполняется всякий раз когда пользователь зажимает клавишу клавиатуры и печатает в Edit1.

function FindAnswer(text : string) : boolean;
Тут вроде как происходит поиск совпадений входящей text с элементами массива

P.S.: Если препод умный, то он с легкостью поймет, что вы не сами писали код. Знание что выполняет каждая функция не спасет вас. Любой шаг в сторону и все, вы не сможете ответить. Самое простое что можно придумать это "Почему вы сделали именно так, а не иначе? Можно ли как-то сделать по другому?" или еще интереснее: "Зачем нужен XPMan в списке подключаемых модулей? Что он дает? Можно ли без него?". Любой вопрос на понимание кода сразу же вас выдаст.

P.S.2: Вот такие специалисты выходят из наших вузов, которые ничего не хотят... Это ладно с жизнью и здоровьем других не связано, а ведь как не печально, в медицинских вузах все точно также. Отсюда и вывод, почему у нас врачи ничерта не знают?


Не оказываю помощь через личные сообщения и ICQ
 
rudenkoДата: Понедельник, 14.06.2010, 02:51 | Сообщение # 5
Ранг 1
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Статус: Offline
каюсь, виноват, ну уж так сложились обстоятельства в моей жизни.
Программа - собеседник. Должна отвечать на простейшие вопросы, как я понял ответ подбирается из базы по ключовому слову задонному в вопросе.


Сообщение отредактировал rudenko - Понедельник, 14.06.2010, 02:53
 
AdminДата: Понедельник, 14.06.2010, 10:34 | Сообщение # 6
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Ну по всей видимости да.

Не оказываю помощь через личные сообщения и ICQ
 
DJ_ЕвсДата: Понедельник, 14.06.2010, 21:53 | Сообщение # 7
Ранг 6
Группа: Проверенные
Сообщений: 165
Награды: 3
Репутация: 1
Статус: Offline
rudenko, ух ты! Всегда мечтал с такой программулькой побазарить. Можешь скинуть архив с EXE ?

ПРОЙДИ ТЕСТ!!!!!
http://FIDO20.ru/test.php?4052&c=bbea2a1

 
AdminДата: Вторник, 15.06.2010, 11:18 | Сообщение # 8
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
DJ_Евс, а чем тебе в первом посте не архив?

Не оказываю помощь через личные сообщения и ICQ
 
DJ_ЕвсДата: Воскресенье, 20.06.2010, 18:40 | Сообщение # 9
Ранг 6
Группа: Проверенные
Сообщений: 165
Награды: 3
Репутация: 1
Статус: Offline
Admin, тем, что там во-первых ОПЕДЯРЮБКЪЕР написан вместо сообщений, во-вторых, где я файлы все возьму, в которых базы и всё прочее? А в третьих - не охото мне всё это впихивать в новый проект и потом под код всё остальное подстраивать.

Добавлено (20.06.2010, 18:40)
---------------------------------------------
ААааА!111!1 Ёпте.... Я ссылочку то и не заметил ))) Сорри. Я идиот! biggrin


ПРОЙДИ ТЕСТ!!!!!
http://FIDO20.ru/test.php?4052&c=bbea2a1

 
Форум » Все о Delphi » Начинающим » Помогите разобраться в программном коде (delphi)
Страница 1 из 11
Поиск:

Copyright DelphiDevelop.ru © 2008-2017
Хостинг от uCoz