Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wagner_augusto

transforma string em braile

Recommended Posts

Boa tarde,

tenho que transformar uma string em um texto braile, como base na tabela braile:

 

braille-alphabet-vector.jpg

por exemplo: se a string ”Barbada 001” for entrada, a saída deverá ser:
.. X. X. X. X. X. XX X. .. .X .X .X X.
.. X. .. XX X. .. .X .. .. .X XX XX ..
.X .. .. X. .. .. .. .. .. XX .. .. ..
o que pensei fazer:
public class Trabalho {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        
        //vetor contendo o alfabeto
        String vetor[] = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","y","x","z"};
      
        //entrada
        System.out.println("informe string");
        String texto = input.next();
        
        
        String braile ="";
        String letra = "";
        //for para percorrer a string inteira
        for(int i = 0; i < texto.length();i++){
            //pega a letra da vez
            letra = String.valueOf(texto.charAt(i));
            for(int j = 0;j<vetor.length;j++){
                //compara a letra com o vetor do alfabeto
                if(letra.equalsIgnoreCase(vetor[j])){
                    //se encontrar uma letra igual, aqui teria que concatenar a string com o braile da letra (uma matriz no caso)
                    braile += "matriz da letra";
                }
            }
        }
        System.out.println(braile);
    }
    
}

alguém tem uma sugestão de como fazer isso?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo visto, essas posições terão que ser definidas manualmente (não vi nenhuma sequência lógica). Exemplo:

 

A matriz terá 12 posições (2 x 6).

A letra "a" tem a posição 1 em destaque. Então, "a" terá um array definido com posição [1].

A letra "b" tem a posição 1 e 3 em destaque. Então, "b" terá um array definido com posição [1, 3].

A letra "c" tem a posição 1 e 2 em destaque. Então, "b" terá um array definido com posição [1, 2].

...

 

Então você pode criar um método que receba como argumento um caractere e retorne uma matriz contendo 0 (pontos cinzas) e 1 (pontos vermelhos) correspondente àquele caractere (com base na posição definida no array de cada letra).

 

Depois crie um método de exibição que, receba uma matriz como argumento e imprima na tela um " ○ " quando o valor na linhaXcoluna for 0 e um " ● " quando o valor for 1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo visto, essas posições terão que ser definidas manualmente (não vi nenhuma sequência lógica). Exemplo:

 

A matriz terá 12 posições (2 x 6).

A letra "a" tem a posição 1 em destaque. Então, "a" terá um array definido com posição [1].

A letra "b" tem a posição 1 e 3 em destaque. Então, "b" terá um array definido com posição [1, 3].

A letra "c" tem a posição 1 e 2 em destaque. Então, "b" terá um array definido com posição [1, 2].

...

 

Então você pode criar um método que receba como argumento um caractere e retorne uma matriz contendo 0 (pontos cinzas) e 1 (pontos vermelhos) correspondente àquele caractere (com base na posição definida no array de cada letra).

 

Depois crie um método de exibição que, receba uma matriz como argumento e imprima na tela um " ○ " quando o valor na linhaXcoluna for 0 e um " ● " quando o valor for 1.

Certo rnxn, só não entendi pq uma matriz 2x6? se cada letra em braile tem 3 linhas e 2 colunas. E por exemplo, a letra c tem em destaque as posições [0,0] e [0,1], como passaria para o método essas posições?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso, foi mal. Eu que escrevi errado. 2 x 3 = 6 posições.

 

A posição que eu me refiro é:

 

1 2

3 4

5 6

 

 

- assim que eu entrar no fórum novamente posto uma possível solução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por exemplo.

/* ponto vermelhos */
final int A[] = {0};
final int B[] = {0,2};
final int C[] = {0,1}

/* ...outras letras... */

Então você cria um método que retornará uma matriz 3x2, lembrando das posições:

 

0 1

2 3

4 5

 

Supondo que eu queira mostrar a letra 'a', o método retornará uma matriz assim:

 

1 0

0 0

0 0

 

A letra 'b':

 

1 0

1 0

0 0

 

 

Depois crie um método de exibição que, receba uma matriz como argumento e imprima na tela um " ○ " quando o valor na linhaXcoluna for 0 e um " ● " quando o valor for 1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.