Numeros capicúas en Matlab – Minituto

Este problema que se resolvera, sale del examen de herramientas computacionales del primer periodo de la UPIITA, que en sus momentos no pude resolver por que me hacia falta un poco de inspiracion y tambien estudiar jeje, el enunciado decia mas o menos asi:

Realiza un programa que determine si un numero de 4 o 5 digitos es capicúa.

[singlepic id=11 w=332 h=265 float=center]

Pero que es un numero capicúa?? Wikipedia nos tiene la respuesta:

La palabra capicúa (en matemáticas, número palíndromo) se refiere a cualquier número que se lee igual de izquierda a derecha y de derecha a izquierda (Ejemplos: 212, 7.540.550.457). El término se origina en la expresión catalana cap i cua (cabeza y cola).

Ahora que sabemos que es lo que buscamos necesitamos plantear una solucion.

-la longitud del numero que debe ser de 4 o 5, y como sabemos eso?? muy facil, si el numero es mayor a 9999 o menor a 999, eso significa que nos hemos salido del rango de 4 o 5 numeros, entonces el programa mandara un error y debera iniciar de nuevo.

-Ahora si queremos comparar los digitos uno a uno primero debemos separarlos y esto se podria hacer haciendo divisiones y modulos y asignando cada digito a una variable para despues compararlas, pero en esta ocasion utilizaremos una funcion mas potente de MatLab llamada “int2str” que convertira nuestra variable entera en una cadena de caracteres, pero a su vez esta cadena se convierte en un vector.

-Bien ahora sabemos la longitud y tenemos sus digitos separados, ahora solo debemos comparar los digitos para saber si es igual cuando lo leemos alreves, para esto usamos la funcion “fliplr” que girara nuestro vector, ahora solo debemos compararlo con nuestro vector original, si es igual nuestro numero sera capicúa, si no pues no xD.

Ahora el codigo (Por cierto alguien tiene alguna segerencia de plugin para formato de codigo??)

[sourcecode language=’text’]
clc
clear
disp(‘Comprueba si un numero de 4 o 5 digitos es capicúa ‘);
disp(‘ ‘);
num=input(‘Introduce el numero a evaluar: ‘);
disp(‘ ‘);

%se analiza si se pasa de las 4 0 5 cifras-
if num>99999 || num<999
disp(‘El numero debe ser de 4 o 5 cifras, intente de nuevo’);
break
end

convierte el entero en una cadena
a=num2str(num);

%gira el vector y lo compara
if a==fliplr(a)
disp(‘El numero es capicúa’);
else
disp(‘El numero no es capicúa’);
end
[/sourcecode]

Bien pues eso es todo, si alguien tiene alguna duda , pregunta o comentario hagamelo saber.

Adrian MB

Me gusta la electrónica, programación y todo lo relacionado. Ing. en Mecatronica de la UPIITA del IPN y estudiante de Diseño Industrial en la UAM. @adrianmtzb http://adrianmb.mx

También te podría gustar...

  • andres Moreno

    hola soy nuevo en matlab y no entiendo para q sirve num&lt no encuentro en la red nada referente a esto,…

    saludos

    • Busca en la ayuda de matlab, viene mejor documentado que en cualquier otro lugar que puedas buscar, puedes usar el comando help