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

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

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

 
 Ответить  Открыть новую тему 
> Необходима инфа до ЗАВТРА!, Теория по проге...
сообщение
Сообщение #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.11.2017 18:00
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"