Вот прога... кто умный-поймет о чем она
Тык вот если в фаил вести больше 100 символов(примерно)
то будет переполнение стека...
Что можно сотворить?
Program stroka;
var i,j,ne,nb,cur,lr,sk,ifbeg,ifen,iffunc:integer;
numbeg,numen:real;
a,beg,en:string;
f:text;
pmur:array[1..4] of boolean;
fl:boolean;
Function ifskob(var b,e:integer):boolean;
begin
ifskob:=true;
cur:=b+1;
fl:=true;
lr:=0;
while (cur < e) and (fl) do
begin
if a[cur]='(' then inc(lr);
if a[cur]=')' then dec(lr);
if lr<0 then
begin
fl:=false;
ifskob:=false;
end;
inc(cur);
end;
end;
Function func(var b,e:integer):real;
var fl:boolean;
e1,b1:integer;
begin
for i:=1 to 4 do
pmur[i]:=true;
while (a[b]='(')and(a[e]=')') do
if ifskob(b,e) then
begin
inc(b);
dec(e);
end
else break;
i:=e;
fl:=true;
sk:=0;
beg:=copy(a,b,e-b+1);
val(beg,numbeg,ifbeg);
func:=numbeg;
if ifbeg>0 then
for j:=1 to 4 do
begin
pmur[j]:=false;
while (i>=b)and(fl) do
begin
if sk=0 then
begin
if (a[i]='+')and(not pmur[1]) then
begin
fl:=false;
beg:=copy(a,b,i-1);
en:=copy(a,i+1,e-i);
b1:=i+1;
e1:=e;
e:=i-1;
val(beg,numbeg,ifbeg);
val(en,numen,ifen);
if (ifbeg=0)and(ifen=0) then
func:=numbeg+numen
else
func:=func(b,e)+func(b1,e1);
end
else
if (a[i]='-')and(not pmur[2]) then
begin
fl:=false;
beg:=copy(a,b,i-1);
en:=copy(a,i+1,e-i);
b1:=i+1;
e1:=e;
e:=i-1;
val(beg,numbeg,ifbeg);
val(en,numen,ifen);
if (ifbeg=0)and(ifen=0) then
func:=numbeg-numen
else
func:=func(b,e)-func(b1,e1);
end
else
if (a[i]='*')and(not pmur[3]) then
begin
fl:=false;
beg:=copy(a,b,i-1);
en:=copy(a,i+1,e-i);
b1:=i+1;
e1:=e;
e:=i-1;
val(beg,numbeg,ifbeg);
val(en,numen,ifen);
if (ifbeg=0)and(ifen=0) then
func:=numbeg*numen
else
func:=func(b,e)*func(b1,e1);
end
else
if (a[i]='/')and(not pmur[4]) then
begin
fl:=false;
beg:=copy(a,b,i-1);
en:=copy(a,i+1,e-i);
b1:=i+1;
e1:=e;
e:=i-1;
val(beg,numbeg,ifbeg);
val(en,numen,ifen);
if (ifbeg=0)and(ifen=0) then
func:=numbeg/numen
else
func:=func(b,e)/func(b1,e1);
end
end;
if not fl then break;
if a[i]='(' then
inc(sk)
else
if a[i]=')'then
dec(sk);
dec(i);
end;
i:=e;
end;
end;
{$M 655360, 0, 65536} или нечто в этом роде...... в начале проги...
[Ответ]
LSL 23:52 10.09.2003
Зиалот , я вижу силы приложить некуда.
Может попробуешь разработать алгоритм исскуственного интелекта для моей игры "Многоточие 2", там не так уж сложно. Будет хит !
[Ответ]
Зиалот 21:00 13.09.2003
LSL боюсь я с этим не справлюсь...я ведь еще школьник.
Можешь конечно вкратце рассказть что нужно.
А пока я пытаюсь расставить 8 ферзей на шахматной доске(задачка такая).[Ответ]
LSL 21:35 13.09.2003
Зиалот
Нет, думаю всё не так сложно. Ферьзи ферьзями а лучше вещь сделать !
Эвристику составить надо сначала.
Игру "точки" я думаю ты знаешь...каждый порядочный студент, а тем более школьник должен её знать..ну та что на клеточном листке играется.
Так вот нужно сделать там компьютерного оппонента.
Ходы по очереди.
Упрощённо, алгоритм примерно такой (правила ты знаешь).
Проверить, не подвергается ли опасности захвата родная(ые) точка(и) если да то защищать иначе окружать точки врага.
Технически точки содержаться в массиве. n*m
0-пусто, 1-твоя, 2-чужая.
Точки "2" окружают точки "1", но точка "2" в опастности, в нижнем
правом углу.
Нужно придумать и написать эти два алгоритма...
Скорей всего нужно адаптировать и использовать волновой алгоритм,
если про него ничего не слышал, могу поделиться информацией
у меня её много [Ответ]
Зиалот 12:42 25.09.2003
LSL ну давай делись., что -то слышал...мож и использую но не знаюю его названия просто..[Ответ]
Зиалот на тему ферзей есть замечательная книга Вирта Алгоритмы и Структуры данных..... там алгоритм ентой задачки в деталях разобран и реализован на Модуле - 2. Очевидно, что не представляет никакого труда переписать ее на Паскаль
[Ответ]
LSL 22:01 22.10.2003
OveRMinD У меня на полке лежит.. Ух и муть. Зря он от паскаля отказался.
[Ответ]
fishca 11:13 23.10.2003
Теория никогда не будет очень уж веселой...и не может быть мутью. Без теории никуда.
[Ответ]
LSL 18:59 23.10.2003
fishca Я не говорю что это плохо, я говорю что это муть
Конечно, теория нужна...
[Ответ]
OveRMinD 20:37 23.10.2003
LSL да.... Вирт там понакрутил малость....но впрочем пособие достаточно полезное...
[Ответ]