O objetivo deste primeiro exercício-programa é familiarizar os alunos com o ambiente de edição, compilação e entrega de trabalhos. Ele não vale nota, mas é bom fazer, pelo seguinte:
Neste exercício-programa, vocês irão
implementar um programa que verifica um tabuleiro de jogo-da-velha e
informa se alguém ganhou, se houve empate, ou se o jogo
ainda não terminou.
Todos vocês estão familiarizados com as regras do dificílimo jogo da velha.
Nesse jogo temos dois jogadores, o jogador X (xis) e o jogador
O (bola), além de um tabuleiro com três linhas e três colunas,
onde cada um dos jogadores pode
deixar a sua marca.
COLUNAS
1 2 3
L
I 1 X | | O
N -----+-----+-----
H 2 0 | 0 | X
A -----+-----+-----
S 3 X | X |
Na configuração acima, vemos que o jogador X colocou as suas marcas nas posições (1,1), (2,3), (3,1) e (3,2), enquanto o jogador O colocou as suas marcas nas posições (1,3), (2,1) e (2,2). Já as posições (1,2) e (3,3) não foram ocupadas por nenhum jogador e ainda estão vazias.
Neste exercício-programa você deverá escrever um programa em C que, dada uma configuração de um tabuleiro de jogo da velha, decide se
Uma partida é considerada como empatada se o tabuleiro está totalmente preenchido, mas nenhum jogador ganhou. Caso não haja um jogador vitorioso e algumas posições ainda estejam vazias, considera-se que a partida ainda não terminou.
A entrada do seu programa serão 9 números inteiros,
representando os conteúdos de cada uma das posições de um
tabuleiro de jogo da velha.
Cada um dos números inteiros pode ser:
O seu programa deve pedir ao usuário que digite os números correspondente aos conteúdos das posições (1,1), (1,2), (1,3), (2,1), (2,2), (2,3), (3,1), (3,2) e (3,3), nesta ordem. Nenhum outro valor deve ser lido pelo seu programa.
O seu programa deverá analisar a configuração do tabuleiro
e imprimir:
Considere os seguintes exemplos de possíveis execuções de seu programa. Os números em vermelho foram digitados pelo usuário.
Exemplo 1
Bem-vindo ao verificador de jogo-da-velha!
Digite os valores das nove posições do tabuleiro (0=vazio, 1=X, 2=O):
(1,1) = 1
(1,2) = 2
(1,3) = 1
(2,1) = 1
(2,2) = 2
(2,3) = 2
(3,1) = 2
(3,2) = 1
(3,3) = 2
1 | 2 | 1
-----+-----+-----
1 | 2 | 2
-----+-----+-----
2 | 1 | 2
Empatou!!!
Exemplo 2
Bem-vindo ao verificador de jogo-da-velha!
Digite os valores das nove posições do tabuleiro (0=vazio, 1=X, 2=O):
(1,1) = 0
(1,2) = 1
(1,3) = 2
(2,1) = 1
(2,2) = 2
(2,3) = 0
(3,1) = 2
(3,2) = 1
(3,3) = 0
0 | 1 | 2
-----+-----+-----
1 | 2 | 0
-----+-----+-----
2 | 1 | 0
O ganhou!!!
Exemplo 3
Bem-vindo ao verificador de jogo-da-velha!
Digite os valores das nove posições do tabuleiro (0=vazio, 1=X, 2=O):
(1,1) = 1
(1,2) = 1
(1,3) = 1
(2,1) = 2
(2,2) = 0
(2,3) = 2
(3,1) = 0
(3,2) = 2
(3,3) = 0
1 | 1 | 1
-----+-----+-----
2 | 0 | 2
-----+-----+-----
0 | 2 | 0
X ganhou!!!
Exemplo 4
Bem-vindo ao verificador de jogo-da-velha!
Digite os valores das nove posições do tabuleiro (0=vazio, 1=X, 2=O):
(1,1) = 0
(1,2) = 1
(1,3) = 0
(2,1) = 2
(2,2) = 0
(2,3) = 0
(3,1) = 1
(3,2) = 0
(3,3) = 0
0 | 1 | 0
-----+-----+-----
2 | 0 | 0
-----+-----+-----
1 | 0 | 0
O jogo não terminou!
O seu programa não precisa fazer consistência dos dados de
entrada.
Isto significa que se, por exemplo, um número negativo for digitado
como entrada para o programa, ou uma letra, um cifrão, uma
arroba, . . , o seu programa pode travar o computador ou
explodir sem ficar envergonhado.
Inclusive, o seu programa não deve ser preocupar se a configuração fornecida
é válida. Por exemplo, uma configuração em que há 5 marcas X no
tabuleiro e nenhum marca O não é válida:
X | | X
-----+-----+-----
| | X
-----+-----+-----
X | X |
Ou, por exemplo, se tiver uma fileira de X e uma de O,
também não é válida. Se for fornecida uma configuração
não válida ao seu programa, ele pode ter qualquer comportamento,
tanto faz a resposta.