IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Необходима инфа до ЗАВТРА!, Теория по проге...
np88
сообщение 21.06.2006 15:26
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской
Реальное имя: Иронов Игорь

Репутация: -  0  +


ЛЮДИ ПОМОГИТЕ!!!!!!!!!!!!!!!!!! СРОЧНО НЕОБХОДИМО РАСПИСАТЬ С ТЕОРИТИЧЕСКОЙ ТОЧКИ ЗРЕНИЯ ПРОГРАММУ КРЕСТИКИ-НОЛИКИ... Что делает каждая процедура, само тело программы, пошагово..... ОТКЛИКНИТЕСЬ УМОЛЯЮ... unsure.gif unsure.gif unsure.gif

Вот и сама прога, прога не моя, а интернетовская...

program KECT;
uses crt,graph;

const cvet:array[boolean] Of integer=(red,blue);
sic:array[boolean] Of String=('OBHYLATEL','KPECTOBCHIK');
letter:array[boolean] Of Char=('0','X');
amount:array[boolean] Of integer=(7,10);
possibleLetters:set of char=['1' .. '9'];

var tbl:array[1..3,1..3] of integer;
z,ax,ay,i,bg,mode,j,imove,p,posX,posY:integer;
curr,ch:char;
winner,ok,flag,b,stopped:boolean;

function sumR(x:integer):integer;
var i,s:integer;
begin
s:=0;
for i:=1 to 3 do
s:=s+tbl[x,i];
sumR:=s
end;

function sumC(x:integer):integer;
var i,s:integer;
begin
s:=0;
for i:=1 to 3 do
s:=s+tbl[i,x];
sumC:=s
end;


function sumDiag(main:boolean):integer;
var i,s:integer;
begin
s:= 0;
case main of
false: for i:=1 to 3 do
s:=s+tbl[i,i];
true: for i:=1 to 3 do
s:=s+tbl[i,4-i]
end;
sumDiag:=s
end;

Procedure PutChar(b:boolean;x,y:integer;c:Char);
var cx,cy:integer;
begin
cx:=x*(getmaxx Div 5)+(getmaxx div 10);
cy:=y*(getmaxy Div 5)+(getmaxy div 10);
setcolor(cvet[ b ]);
settextjustify(centertext,centertext);
outtextxy(cx,cy,c);
setcolor(green);
end;

begin
bg:=detect;
initgraph(bg,mode,'c:\bp\bgi');
for i := 1 to 3 do
for j := 1 to 3 do
tbl[i, j] := 0;
ax := getmaxx Div 5;
ay := getmaxy Div 5;
for z:= 1 to 4 do
line(ax, z*ay, 4*ax, z*ay);
for z:= 1 to 4 do
line(z*ax, ay, z*ax, 4*ay);
for imove := 1 to 9 do
begin
setviewport(1, getmaxy-60, getmaxx, getmaxy, true);
clearviewport;
setviewport(1, 1, getmaxx, getmaxy, true);
outtextxy(getmaxx div 2, getmaxy - 30, sic[odd(imove)]);
repeat
ch:= readkey;
until ch in possibleletters;
possibleletters:=possibleletters-[ch];
p:=Ord(ch)-Ord('0');
posY:=(((p-1) div 3)*(-1))+3;
posX:=((p) mod 3);
if posX=0 then posX:=3;
PutChar(odd(imove),posX,posY,letter[odd(imove)]);
tbl[posX,posY]:=amount[odd(imove)];
stopped:=false;
for b:=false to true do
begin
for i := 1 to 3 do
if (sumR(i)=3*amount[ b ]) or (sumC(i)=3*amount[ b ]) then
begin
winner:=b; stopped:=true;
end;
if not stopped then
if (sumDiag(false)=3*amount[ b ]) or (sumDiag(true)=3*amount[ b ]) then
begin
winner:=b; stopped:=true;
end;
end;
if stopped then break;
end;
setviewport(1, getmaxy-60, getmaxx, getmaxy, true);
clearviewport;
setviewport(1, 1, getmaxx, getmaxy, true);
if stopped then
begin
cleardevice;
setactivepage(1);
begin
setcolor(red);
settextstyle (7,0,5);
outtextxy(getmaxx div 2, (getmaxy div 2)+60,'BIGPAL '+sic[winner]);
outtextxy((getmaxx div 2), ((getmaxy div 2)-60)+60,'YPA '+sic[winner]+'Y');
setcolor(white);
end;
flag:=true;
while not keypressed do
begin
if flag=true then
begin
setvisualpage (1);
setactivepage (0);
begin
setcolor(blue);
settextstyle (7,0,5);
outtextxy((getmaxx div 2), ((getmaxy div 2)-32)+60,'BIGPAL '+sic[winner]);
outtextxy((getmaxx div 2), ((getmaxy div 2)-92)+60,'YPA '+sic[winner]+'Y');
setcolor(white);
end;
end
else begin
setvisualpage (0);
delay (500);
setactivepage (1);
end;
flag:=not flag;
end;
readln
end
else
begin
cleardevice;
setactivepage(1);
begin
setcolor(red);
settextstyle (1,0,5);
outtextxy(getmaxx div 2, getmaxy div 2, 'FYYYYYY, HUKTO HE BIGPAL!');
setcolor(white);
end;
flag:=true;
while not keypressed do
begin
if flag=true then
begin
setvisualpage (1);
setactivepage (0);
begin
setcolor(blue);
settextstyle (1,0,5);
outtextxy(getmaxx div 2, (getmaxy div 2)-32, 'FYYYYYY, HUKTO HE BIGPAL!');
setcolor(white);
end;
end
else begin
setvisualpage (0);
delay (500);
setactivepage (1);
end;
flag:=not flag;
end;
closeGraph
end;
end.
unsure.gif unsure.gif unsure.gif unsure.gif unsure.gif

пользуйся тегами, а по поводу разбора кода обратись к его автору, врядли кто-то возьмется разжевывать чужой код
klem4
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 22.06.2025 20:26
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"