Com objetivo de corrigir palavras escritas de maneira incorreta em um arquivo de texto, utilizamos uma árvore de prefixos a fim de armazenar um dicionario, onde desfrutamos do mesmo para verificar a ortografia de cada palavra presente no arquivo em questão.
Feedback atribuído em nosso trabalho pelo Professor Doutor Juliano Henrique Foleis que ministra a matéria de Algoritmos e Estruturas de Dados 2 na Universidade Tecnologia Federal do Paraná (UTFPR/CM).
# Clone este repositório
$ git clone https://github.com/jhonatancunha/corretor_ortografico
# Acesse a pasta do projeto no terminal/cmd
$ cd corretor_ortografico
# Execute o makefile (windows)
$ mingw32-make
# Execute o makefile (linux)
$ make
# Por fim inicie o executavel
#Windows
$ main "nome_arquivo.txt"
#Linux
$ ./main "nome_arquivo.txt"
Argumento | Descrição |
---|---|
"nome_arquivo.txt" | É o arquivo .txt que você deseja verificar se a ortografia das palavras estão corretas. |
#Executei passando os seguintes argumentos
#Windows
$ main "testes/default.txt"
#Linux
$ ./main "testes/default.txt"
Obtemos as seguintes informações como saida do algoritmo.
STATUS | TEXTO |
---|---|
Incorreto | Eyte e um arxuiyo exkmpvo qte seva analizadu pelu corretur |
Correto | Este e um arquivo exemplo que sera analisado pelo corretor |
Nesta palavra utilizaremos a técnica de alternar coringas com objetivo de encontrar qual a letra incorreta em nossa palavra. Coringas serão representados pelo caracter '*', e na posição referente a ele, podemos usar qualquer letra do alfabeto até encontrar a correta.
🔎 Palavra: hoye
Prefixo Procurado | Resultado |
---|---|
*oye | NULL |
h*ye | NULL |
ho*e | hoje |
hoy* | NULL |
Utilizaremos esta regra em palavras com mais de 5 letras, onde iremos pesquisar uma palavra p que vá até a posição n-3 e n-2. Tal regra nos retorna chaves que casam com o prefixo procurado.
🔎 Palavra: saladq
Prefixo Procurado | Resultado |
---|---|
salad | salada, saladas |
sala | sala, salada |
Esta regra retorna o maior prefixo válido de uma palavra procurada. A fim de exemplo, ao pesquisar a palavra "zebraolho", receberemos a chave "zebra" como retorno.
🔎 Palavra: zebraolho
Prefixo Procurado | Resultado |
---|---|
zebraolho | zebra |
Essa regra é formulada via conjunção da regra 1 com a regra 2, ou seja, aplicaremos a regra 2 na palavra alvo e logo após a regra 1.
🔎 Palavra: xinamiyb
Prefixo Procurado | Resultado |
---|---|
dinamiy | CASO N-2 |
*inamiy | NULL |
x*namiy | NULL |
xi*amiy | NULL |
xin*miy | NULL |
xina*iy | NULL |
xinami* | NULL |
dinami | CASO N-3 |
*inami | dinamica, dinamico, dinamita, dinamite, dinamito, dinamiza, dinamize, dinamizo |
x*nami | NULL |
xi*ami | NULL |
xin*mi | NULL |
xina*i | NULL |
xinam* | NULL |
Essa regra é baseada na regra 1, porém, agora iremos utilizar dois coringas. Onde um ficará fixado em uma posição, enquanto o outro irá percorrer a palavra.
🔎 Palavra: xinxmite
Prefixo Procurado | Resultado |
---|---|
**nxmite | NULL |
*i*xmite | NULL |
*in*mite | dinamite |
*inx*ite | NULL |
etc... | NULL |
Essa regra foi pensada para encontrar palavras que contém letras repetidas ou inexistentes, a mesma intercala pelos caracteres da palavras anulando-os. A fim de exemplificar, ao procurarmos a palavra "caasa", o código tenta encontrar as chaves: aasa, casa, casa, caaa, caas.
🔎 Palavra: commentario
Prefixo Procurado | Resultado |
---|---|
ommentario | NULL |
cmmentario | NULL |
comentario | comentario |
comentario | comentario |
commntario | NULL |
commetario | NULL |
commenario | NULL |
commentrio | NULL |
commentaio | NULL |
commentaro | NULL |
commentari | NULL |
Jhonatan Cunha |
Jessé Pires |