palindrome en C# – explicación
hace ya casi más de un año que en mi spaces, escribí un ejemplo de como identificar un palíndromo, y hace un rato me preguntaron sobre su funcionamiento, y creo que no lo explique bien, así que en este post explicare línea por línea para que se entienda mejor, así que aquí vamos…
using System; using System.Collections.Generic; using System.Text; namespace palindrome { class Program { //variables para derterminar si la palabra es palindrome o no //son constantes, porque la funcion verificar es de tipo entero // y retornara un 0 o 1 respectivamente. const int palindrome = 1; const int nopalindrome = 0; static void Main(string[] args) { //este es un arreglo de tipo char, que contendra la letra a introducir char[] carateres; //pedimos al usuario que introduzca una palabra Console.WriteLine("Ingrese una palabra: "); //asignamos lo que teclea el usuario a la variable "s" string s = Console.ReadLine(); //instanceamos la var "caracteres" indicando el tamaño de el arreglo //que en este caso es el tamaño de la palabra introducida. carateres = new char[s.Length]; //saber cuantos caracteres tienes nuestra cadena //esto lo hacemos copiando los caracteres de una subcadena especificada //esto lo hace el metodo ToCharArray carateres = s.ToCharArray(0, s.Length); //Console.WriteLine(s.Length); //comparamos si lo que nos regresa la función es un 1 //si es así la palabra es palindrome, sino pues no lo es if (verificar(0, carateres, s.Length) == palindrome) Console.WriteLine("la palabra es palindrome..."); else Console.WriteLine("La palabra no es palindrome..."); } //aquí es donde comparamos las letras de inicio a fin static int verificar(int pos, char[] palabra, int largo) { //primera condición, si la palabra en su posición 0 es igual a la ultima, //por ejemplo "ojo", verifica si la pos 0 ('o') es igual a la ultima (3-0-1= 2) que también es una 'o' if (palabra[pos] == palabra[largo - pos - 1]) { //aquí solo nos indica que si las pos es menor que largo - pos entra e incrementa pos //cuando llega al centro de la palabra, nos indica que es un palindrome if (pos < largo - pos) return (verificar(++pos, palabra, largo)); else return (palindrome); } //si no entra al if en donde se comaparan los caracteres return (nopalindrome); } } }
espero q se entienda y les sea de utilidad, la verdad es que ya no me acordaba :P, pero ya que lo vi de nuevo y compilé, es así como funciona.
Saludos!
Categorías: C#
Hey el codigo no compila.
Que tal Roland,
antes de publicar un post con código me aseguro que funcione, y este del palindrome funciona. Me gustaria ayudarte asi que si eres tan amable de decirme por qué?, no compila o que errores te manda al tratar de generar la solución por favor.
Necesito un metodo que me diga si el arreglo string, ingresado por un usuario, es palindromo o no :S..
Realmente me tiene medio trancado… agradezco cualquier ayuda.
Saludos
Amigo Taio,
el ejemplo hace exactamente lo que pides, a no ser que lo necesites en otro lenguaje, si es el caso me puedes decir y con gusto te ayudo
Estimado Norber:
Es que ese codigo, me indica si la palabra (1 solo string) es palindromo, yo lo que necesito es comparar un array de strings:
EJ: string[] x={«hola», «soy», «taio»};
no se si usando el Compare.. puedo lograr que me retorne un bool al main, indicandome si es o no un palindromo.
Desde ya, muchas gracias por la pronta respuesta.
Un saludo desde Cerro Largo, Uruguay.
Esta es la letra del ejercicio que necesito terminar….
Se desea codificar un programa en consola de C# que permita la manipulación de palabras en una frase. La frase
debe ser ingresada por el usuario y luego se mostrarán diferentes salidas.
Parte a) Escribir en el método Main un código que pregunte al usuario la cantidad de palabras que tendrá la frase y
luego le pida que ingrese todas esas palabras, guardándolas en un arreglo de strings. Escribir un método que reciba
la frase como parámetro y que la muestre en pantalla de forma de poder verificar lo ingresado. Se debe poder
invocar a dicho método desde un menú del Main.
Parte b) Escribir un método que cuente la cantidad de letras de la frase. Se debe poder invocar a dicho método
desde un menú del Main.
Parte c) Escribir un método que reciba la frase y devuelva la frase invertida (es decir con las palabras en el orden
inverso al original). Se debe poder invocar a dicho método desde un menú del Main.
Parte d) Escribir un método que reciba la frase y devuelva si la misma es un palíndromo o no. Un palíndromo es
una frase que se lee igual de adelante hacia atrás y de atrás hacia delante. Por ejemplo la frase “hola Juan” no es un
palíndromo, mientras que “hola Juan hola”. Se debe poder invocar a dicho método desde un menú del Main.
Nota: el palíndromo que se hace referencia aquí es de a palabras, no de a letras como usualmente ocurre.
El menú del programa deberá verse similar al siguiente (y se deberá mostrarse una y otra vez hasta que el usuario
decida terminar el programa):
Ingrese una Opción:
1 – Ingresar una nueva frase.
2 – Mostrar la frase actual.
3 – Contar la cantidad de letras de la frase actual.
4 – Invertir frase actual.
5 – ¿Es la frase actual un palíndromo?
6 – Terminar el programa.
Amigo Taio,
Pudes encontrar lo que buscas en este post:
Espero que te sea de ayuda y gracias por escribir comentarios en el blog, te recomiendo que aunque no seas un experto en programar y estes iniciando siempre debes intentar una y otra vez hacerlo por tu cuenta si después de muchos intentos no lo consigues pide ayuda, tomalo como un consejo.
Saludos!
He!!
caballero!
una ayuda!
nesecito el codigo del calculo! del palindrome!
pero de una forma dinamica!
osea!
con un ciclo for!
dentreoo de una clase!
graccias de antemano!
Hola Jhonattan.
Un tip, para hacer esto fácil, crea una clase con el nombre que quieras y solo copia el código sin el metodo Main, que es el que manda a llamara la función que necesitas y listo, creas el objeto de tu clase y mandas a llamar el método como lo haces en el Main :D.
Solo cambia la clase Program por una nueva, sin el método main y ya
Saludos
Oye seria bueno que utilizaras variables de tipo bool para que no te consuman la memoria de declarar dos int
entonces manejas el valor de las variables para decir si es o no es palindrome esta bien tu code thnx!
ola nesesito un programa q me diga si una palabra es polindroma o no
#include
#include
#include
main()
{
int x=0,lon=0,aux=0;
char cad[20];
printf(«Introduce una cadena:»); gets(cad);
lon=strlen(cad);
for(x=0;x<lon;x++)
if(cad[x]==cad[(lon-1)-x])
aux++;
if (aux==lon)
printf(" si es polindroma");
else
printf(" no es polindroma");
getch();
}
tengo este pero en lugar de printf quiero un cout y no me sale
ayudame porfavor
hola!!
para usar el cout necesitas una referencia, creo que se llama iostream.
hola a todos, necesito un programa hacerca de un palindromo, xfa si ai alguien que pueda ayudar se lo agradeceria mucho , lo necesito lo mas pronto posible gracias.
por favor pongan ejemplos pero con numeros porfis…..
Dado un número n en base 10, escribe un programa que
proporcione la menor base b tal que 2 ≤ b < 10, en la que este se puede representar
como palíndromo, así como su representación r, en caso de no existir dicha base, la
salida debe de ser b = -1 y r = 0.
Entrada: La primera línea contiene el numero de casos de prueba y el resto un número
entero n en decimal tal que 0 < n < 2,147,483,647.
Salida: Un número entero b y un numero r representado en base b. (espacio entre b y r) es un problema de examen y no tengo ni idea de lo que tengo que hacer
xfisssss… ayundenme
graxxxx….
tu codigo no funciona……
memo,
gracias por la observación, la verdad es que el código no compila, solo es borrar una parte y funciona bien. ya esta solucionado.
Saludos.
hola necesito ayuda si es lo q necesito pero no imprime el resultado o lo imprime y desaparece rapido y intente poner el codigo
console.readline(); pero no funciono me tira error q puedo hacer
antes de cerrar la «{» del Main coloca esta linea: «Console.ReadLine();»