Scrabble
Determine qual das duas palavras do Scrabble vale mais.
$ ./scrabble
Player 1: COMPUTER
Player 2: science
Player 1 wins!
Problema a Resolver
Em um arquivo chamado scrabble.c
em uma pasta chamada
scrabble
, implemente um programa em C que determine o
vencedor de um jogo curto do tipo Scrabble. Seu programa deve solicitar entrada duas vezes: uma vez para o
“Player 1” inserir sua palavra e uma vez para o “Player 2” inserir sua palavra. Então, dependendo de qual
jogador marcar mais pontos, seu programa deverá imprimir “Player 1 wins!”, “Player 2 wins!” ou “Tie!” (caso
os dois jogadores marquem pontos iguais).
Começando
Contexto
No jogo de Scrabble, os jogadores criam palavras para marcar pontos, e o número de pontos é a soma dos valores de ponto de cada letra na palavra.
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 3 | 3 | 2 | 1 | 4 | 2 | 4 | 1 | 8 | 5 | 1 | 3 | 1 | 1 | 3 | 10 | 1 | 1 | 1 | 1 | 4 | 4 | 8 | 4 | 10 |
Por exemplo, se quisermos pontuar a palavra Code
,
observamos que, de acordo com as regras gerais do Scrabble, a letra C
vale 3
pontos, o o
vale 1
ponto, o d
vale 2
pontos e o e
vale 1
ponto. Somando tudo isso, temos que Code
vale 3 + 1 + 2 + 1 = 7
pontos.
Detalhes de Implementação
Completar a implementação de scrabble.c
, de forma que
determine o vencedor de um jogo curto semelhante ao Scrabble, em que dois jogadores entram com suas palavras e o
jogador com a maior pontuação vence.
- Você pode utilizar um array de inteiros para armazenar os valores de pontos correspondentes a cada letra do alfabeto e
chamá-lo de
POINTS
por exemplo.- Por exemplo,
A
oua
vale 1 ponto (representado porPOINTS[0]
),B
oub
vale 3 pontos (representado porPOINTS[1]
), etc.
- Por exemplo,
- Você pode criar uma função auxiliar chamada, por exemplo, de
compute_score()
que recebe uma string como entrada e retorna umint
. Sempre que quisermos atribuir valores de pontos a uma palavra específica, podemos chamar essa função. - Em
main()
, o programa deve solicitar que os dois jogadores informem suas palavras usando a funçãoget_string()
. Esses valores devem ser armazenados em variáveis, comoword1
eword2
. - Em
compute_score()
, o programa deve calcular, usando o arrayPOINTS
, e retornar a pontuação para da string. Caracteres que não são letras devem receber zero pontos, e letras maiúsculas e minúsculas devem receber os mesmos valores de ponto.- Por exemplo,
!
vale0
pontos enquantoA
ea
valem ambos1
ponto. - Embora as regras do Scrabble normalmente exijam que uma palavra esteja no dicionário, não é necessário verificar isso neste problema!
- Por exemplo,
- Em
main()
, seu programa deve imprimir, dependendo das pontuações dos jogadores,Player 1 wins!
,Player 2 wins!
ouTie!
.
Dicas
-
Você pode achar as funções
isupper()
eislower()
úteis. Essas funções recebem um caractere como argumento e retornam um valor booleano. -
Para encontrar o valor no índice
n
de um array chamadoarr
, podemos escreverarr[n]
. Podemos aplicar isso às strings também, já que as strings são arrays de caracteres. -
Lembre-se de que os computadores representam caracteres usando ASCII, um padrão que representa cada caractere como um número.
Como Testar seu Código
Seu programa deve se comportar de acordo com os exemplos abaixo.
$ ./scrabble
Player 1: Question?
Player 2: Question!
Tie!
$ ./scrabble
Player 1: Oh,
Player 2: hai!
Player 2 wins!
$ ./scrabble
Player 1: COMPUTER
Player 2: science
Player 1 wins!
$ ./scrabble
Player 1: Scrabble
Player 2: wiNNeR
Player 1 wins!
Execute o código abaixo para avaliar a correção do seu código usando o check50
. Mas certifique-se de compilar e testar por conta
própria também!
check50 cs50/problems/2024/x/scrabble
Execute o comando abaixo para avaliar o estilo do seu código utilizando o style50
.
style50 scrabble.c
Como enviar
No seu terminal, execute o comando abaixo para enviar o seu trabalho.
submit50 cs50/problems/2024/x/scrabble