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.