Anda di halaman 1dari 3

Universidade Federal de Alfenas

Departamento de Cincias Exatas


Cincia da Computao
www.bcc.unifal-mg.edu.br

Desafio Programao Estruturada Entrega 02/12/2015 VALOR: 2,5


Prof. Flavio Barbieri Gonzaga

O Problema
Quantos pressionares de tecla so necessrios para se escrever uma mensagem? Nos celulares
mais modernos, com tela sensvel ao toque, esse nmero geralmente igual ao nmero de
caracteres da mensagem. Contudo, em dispositivos onde no se possui um teclado fsico, ou
tela sensvel, bastante comum ser oferecido ao usurio um teclado virtual, acompanhado de
teclas que movimentam um cursor ao longo do mesmo. A Figura 1 exibe um teclado desses
como exemplo. O teclado esquerda o teclado virtual em si, geralmente exibido na tela para
o usurio, enquanto que as setas e a tecla SEL direita representam teclas fsicas, existentes por
exemplo, no controle remoto usado para se manipular o teclado virtual.

Figura 1 Exemplo de teclado virtual, e setas de cursor.


Nesse desafio o problema a ser resolvido : dado o layout de um teclado, e uma palavra,
voc deve informar qual o nmero mnimo de teclas a serem pressionadas no
movimento do cursor, de modo palavra ser escrita. Na Figura 2 apresentado um
exemplo para se escrever a palavra CIENCIA. O cursor sempre inicia na letra localizada
no alto esquerda do teclado. Nesse exemplo, na letra A. Cada seta indica o pressionar
de uma tecla no teclado que movimenta o cursor. Os crculos indicam o pressionar da
tecla SEL, que envia o caractere palavra em construo.

Universidade Federal de Alfenas


Departamento de Cincias Exatas
Cincia da Computao
www.bcc.unifal-mg.edu.br

Figura 2 Exemplo de sequncia a se fazer para escrever a palavra CIENCIA.


As teclas so organizadas em uma grade, de modo que uma tecla pode ocupar uma ou
mais posies da grade. Veja por exemplo, a tecla ENTER, que ocupa duas posies nessa
grade. Caso uma tecla ocupe mais de uma posio, o formato da mesma ainda assim
ser um quadrado ou um retngulo. Caso voc pressione uma tecla, que exista mais de
uma possibilidade de movimento, o cursor ir para o ponto mdio. Caso haja empate no
ponto mdio, o cursor ir para a tecla esquerda, ou para a tecla acima (dependendo
da posio das teclas). Para entender melhor, veja a Figura 3. Nessa figura, assuma que
o cursor est inicialmente posicionado sobre a tecla 1, e que o usurio escolha ir para
cima. No caso esquerda, as teclas 2 e 3 se encontram acima da tecla 1. Caso onde
o cursor ir para a tecla esquerda, ou seja, a 2. No caso direita, as teclas 2, 3, e
4 se encontram cima da tecla 1. Caso onde o cursor ir para o ponto mdio, que a
tecla 3. O outro exemplo da figura ilustra a mesma ideia, mas para movimentaes na
horizontal.

Figura 3 Movimentao do cursor a se pressionar a seta para cima.


2

Universidade Federal de Alfenas


Departamento de Cincias Exatas
Cincia da Computao
www.bcc.unifal-mg.edu.br

Entrada de dados
Os dados devero ser lidos a partir de um arquivo texto chamado entrada.txt. A
primeira linha contm dois inteiros l e c (1 l, c 200), que indicam o nmero de linhas
e colunas existentes na grade sobre a qual o teclado foi desenhado. O teclado ento
especificado nas prximas l linhas e c colunas. Os caracteres possveis do teclado so
letras maisculas, minsculas, dgitos, hfen, e asterisco (que representa o enter). A
ltima linha do arquivo contm a palavra p (1 p 10000) a ser escrita. O arquivo de
entrada pode conter mltiplos casos de entrada, que sero repetidos sempre nessa
ordem apresentada acima (l e c, l linhas com c colunas cada, e uma palavra a ser
analisada).
Para o exemplo dado, a entrada seria a seguinte:
47
ABCDEFG
HIJKLMN
OPQRSTU
VWXYZ**
CIENCIA
A sada pode ser apresentada na tela mesmo (no h necessidade de se gravar em
arquivo). Para esse exemplo, so necessrios 36 pressionamentos de teclas.

Bom Trabalho!
3