Invertendo strings usando vetores
Publicado por maxshu (última atualização em 17/11/2014)
[ Hits: 7.975 ]
Homepage: programacaocomputador.blogspot.com.br
Hoje trago um simples inversor de strings, mas que possui alguns comandos avançados.
Um colega deste site (truster0) perguntou o seguinte:
Fala pessoal, então não tenho muito conhecimento em shell e preciso fazer este exercicio abaixo:
Faça um script que verifique se um nome é um palíndromo. Uma palavra é um palíndromo se a sua leitura é a mesma da esquerda para a direita e vice versa. Dica: use um array para armazenar a palavra. Exemplo: ARARA, ANA, etc.
Me arrisquei e deu isso mas está dando erro:
#!/bin/bash
echo "Digite a palavra a ser testada"
read palavra
for ((i=o ; i<=tamanho ; i++))do
if ((palavra=palavra[((tamanho-1)-i))]
verifica=1
if(verifica -eq 0)then
echo "Igual de tras pra frente"
else
echo "Diferente de tras pra frente"
fi
No tópico: http://www.vivaolinux.com.br/topico/Shell-Script/Ajuda-com-Shell-Script-7
Então, mandei uma resposta pro problema:
#!/bin/bash
read -p "Digite a palavra a ser testada: " palavra
reverse="$(echo $palavra | rev)"
if [ "$reverse" = "$palavra" ]
then {
echo "Igual de tras pra frente"
}
else {
echo "Diferente de tras pra frente"
}
fi
Este é um script simples, pois usa comandos conhecidos do shell Linux. Mas o colega, não conformado com a solução, pediu que o script fosse iterado caractere por caractere. Então, resolvi elaborar um script mais avançado.
Pessoal, este script é muito simples, mas poderoso quando queremos compara caracteres individuais.
#!/bin/bash
read -p "Digite a palavra a ser testada: " palavra
cont0=1
cont1=$(echo $palavra | wc -m)
contchar=$(echo "$cont1-$cont0" | bc)
for(( i=1; i <= $contchar; i++ ))
do
c1[$i]=$(echo "$palavra" | cut -b $i)
done
h=$(echo "$contchar+$cont0" | bc)
for(( k=1; k<=$contchar; k++ ))
do
j=$(echo "$h-$k" | bc)
c2[$j]=$(echo ${c1[$k]})
done
if [ "$(echo ${c2[@]})" == "$(echo ${c1[@]})" ]
then {
echo "Igual de tras pra frente"
}
else {
echo "Diferente de tras pra frente"
}
fi
Atualização Automática do Uvscan (Antivirus for linux)
SlackelsPKG 1.0 - uma réplica de gerenciador de pacotes para o Slackware Current
Organize seu /var/log/messages
Script de Instalação de Layer7 no CentOS 6.0
A produção de áudio e vídeo no Linux e as distribuições dedicadas a esse fim
Criptografando sua Home com Gocryptfs para tristeza do meliante
A Involução do Linux e as Lambanças Desnecessárias desde o seu Lançamento
O Journal no Linux para a guarda e consulta de logs do sistema
A evolução do Linux e as mudanças que se fazem necessárias desde o seu lançamento
Cursor do mouse gigante no KDE Plasma
Integração do Flatpak e Flathub no Kubuntu (KDE Discover)
Habilitando suporte ao Flatpak e Flathub no Ubuntu









