• Как решить эту задачу на pascal


    Напишите программу, которая по изображению поля для игры в «Крестики-нолики» определит, могла ли такая ситуация возникнуть в результате игры с соблюдением всех правил.

    Напомним, что игра в «Крестики-нолики» ведется на поле 3x3. Два игрока ходят по очереди. Первый ставит крестик, а второй – нолик. Ставить крестик и нолик разрешается в любую еще не занятую клетку поля. Когда один из игроков поставит три своих знака в одной горизонтали, вертикали или диагонали, или когда все клетки поля окажутся заняты, игра заканчивается.
    Входные данные

    Вводится три строки по три числа в каждой, описывающих игровое поле. Число 0 обозначает пустую клетку, 1 – крестик, 2 – нолик. Числа в строке разделяются пробелами.
    Выходные данные

    Требуется вывести слово YES, если указанная ситуация могла возникнуть в ходе игры, и NO в противном случае.
    Примеры
    Входные данные

    1 1 1
    1 1 1
    1 1 1

    Выходные данные

    NO

    Входные данные

    2 1 1
    1 1 2
    2 2 1

    Выходные данные

    YES

    Входные данные

    1 1 1
    2 0 2
    0 0 0

    Выходные данные

    YES

    Входные данные

    0 0 0
    0 1 0
    0 0 0

    Выходные данные

    YES

    Входные данные

    1 1 1
    2 2 2
    0 0 0

    Выходные данные

    NO


Ответы 1

  • var a:array[1..3,1..3] of integer; t:array[0..2] of boolean; k:array[0..2] of integer; i,j:integer; res:boolean;begin for i := 1 to 3 do for j := 1 to 3 do   read(a[i,j]); for i := 0 to 2 do  begin  k[i] := 0;  t[i] := false;  end;  for i := 1 to 3 do for j := 1 to 3 do   k[a[i,j]] := k[a[i,j]] + 1;  for i := 1 to 3 do   begin   if (a[i,1] = a[i,2]) and (a[i,2] = a[i,3]) then     t[a[i,1]] := true;   if (a[1,i] = a[2,i]) and (a[2,i] = a[3,i]) then     t[a[1,i]] := true;   end; if (a[1,1] = a[2,2]) and (a[2,2] = a[3,3]) then   t[a[2,2]] := true; if (a[3,1] = a[2,2]) and (a[2,2] = a[1,3]) then   t[a[2,2]] := true;  res := true;  if (k[1] - k[2] > 1) or (k[1] - k[2] < 0) then   res := false;  if t[1] and ( t[2] or (k[1] = k[2]) ) then   res := false;  if res then   writeln('YES') else   writeln('NO')end.
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years