Palíndromo

De GNU Octave
Revisão em 16h40min de 21 de janeiro de 2013 por Jgrocha (Discussão | contribs)

Ir para: navegação, pesquisa

Um palíndromo é uma palavra ou frase que tem a propriedade de poder ser lida tanto da direita para a esquerda como da esquerda para a direita. Num palíndromo, normalmente não são considerados os sinais ortográficos (acentos ou de pontuação), assim como o espaços entre palavras.

Escreva uma função que verifique se uma frase é um palíndromo, como em:

  • Ana
  • salas
  • A droga gorda
  • Luz azul
  • Anotaram a data da maratona
Mais informação

[1]

[2]

function res = ispalindromo(frase)
% ispalindromo(frase)
%	indica se uma determinada frase é um palíndromo.
%	Isto é, se pode ser lida de trás para a frente.
%	Para calcular, limpa-se a frase e depois
%	compara-se a mesma com o reverso desta.
 
	limpa = lower(frase(find(isletter(frase))));
	res = all( limpa == fliplr(limpa));
endfunction

Em alternativa, podia-se escrever um programa, com um ciclo em que se testa a primeira letra com a última, a segunda com a penúltima, e assim sucessivamente.

frase = input('Introduza uma frase para verificar se é palindromo: ','s')
limpa = lower(frase(find(isletter(frase))))
flag = 1;
for k = 1:round(length(limpa)/2)
	printf('%c = %c\n', limpa(k), limpa(end-k+1));
	if ( limpa(k) != limpa(end-k+1) )
		flag = 0;
		break;
	endif
endfor
if flag
	disp('É um palíndromo');
else
	disp('Não é um palíndromo');
endif