Diferenças entre edições de "Palíndromo"

De GNU Octave
Ir para: navegação, pesquisa
Linha 25: Linha 25:
 
res = all( limpa == fliplr(limpa));
 
res = all( limpa == fliplr(limpa));
 
endfunction
 
endfunction
 +
</syntaxhighlight>
 +
 +
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.
 +
 +
<syntaxhighlight>
 +
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
 
</syntaxhighlight>
 
</syntaxhighlight>

Revisão das 17h40min de 21 de janeiro de 2013

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