Este post en respuesta aun comentario en el post de palindrome en C# – explicación. Tengo que mencionar que cualquier otro día (es decir; un fin de semana o un día que no sea lunes xD) no hubiera contestado este comentario con un post, solo hubiera dicho, amigo piénsale un poco y seguro encuentras la respuestas, pero esta vez he llegado al trabajo y como no tengo mucho que hacer aquí rápido la solución a su tarea, solo espero que su profesor no vea este post xD.
El comentario lo pueden revisar aquí:
http://mspnor.wordpress.com/2008/08/10/palindrome-en-c-explicacin/#comment-330
Y aquí la mi pequeño programa que espero que funcione y les sirva (lo pongo por partes para que se entienda):
Main:
static void Main(string[] args)
{
//variables
StringBuilder frase = new StringBuilder();
//Menú
Menu:
Menu();
int opcion = int.Parse(Console.ReadLine());
switch (opcion)
{
case 1:
Console.Clear();
goto Leer;
case 2:
Console.Clear();
MostrarFrase(frase);
Console.ReadLine();
goto Menu;
case 3:
Console.Clear();
MostrarTotalLetras(frase);
Console.ReadLine();
goto Menu;
case 4:
Console.Clear();
FraseInvertida(frase);
Console.ReadLine();
goto Menu;
case 5:
Console.Clear();
EsPalindrome(frase);
Console.ReadLine();
goto Menu;
default:
break;
}
Leer:
try
{
Console.WriteLine("Cantidad de Palabras que tendrá la frase?");
int totalPalabras = int.Parse(Console.ReadLine());
Repetir:
Console.Clear();
Console.WriteLine("Introduce Frase: ");
string[] frase1 = Console.ReadLine().Split(' ');
for (int i = 0; i < frase1.Length; i++)
{
if (totalPalabras == frase1.Length)
{
if (i == (frase1.Length - 1))
frase.Append(frase1[i]);
else
frase.Append(frase1[i] + " ");
}
else if (totalPalabras < frase1.Length)
{
Console.Clear();
Console.WriteLine("Te excediste en el total de palabras!");
Console.WriteLine("Solo se aceptan {0} palabras para esta frase y escribiste {1}", totalPalabras, frase1.Length);
Console.WriteLine("Inténtalo de nuevo..");
Console.ReadLine();
goto Repetir;
}
else
{
break;
}
}
Console.ReadLine();
goto Menu;
}
catch (Exception ex)
{
Console.Clear();
Console.WriteLine("Debes seleccionar una opción, escribe un número");
Console.ReadLine();
goto Leer;
}
}
Menú:
private static void Menu()
{
Console.Clear();
Console.WriteLine("");
Console.WriteLine("1 – Ingresar una nueva frase.");
Console.WriteLine("2 – Mostrar la frase actual.");
Console.WriteLine("3 – Contar la cantidad de letras de la frase actual.");
Console.WriteLine("4 – Invertir frase actual.");
Console.WriteLine("5 – ¿Es la frase actual un palíndromo?");
Console.WriteLine("6 – Terminar el programa.");
Console.WriteLine("");
Console.Write("Elige una Opción: ");
}
Mostrar Totales Letras:
private static void MostrarTotalLetras(StringBuilder frase)
{
Console.WriteLine("El total de letras en la frase es: {0}",frase.ToString().Length);
}
Frase Invertida:
private static void FraseInvertida(StringBuilder frase)
{
Console.WriteLine("Frase Invertida: {0} ",invertir(frase.ToString()));
}
Función Invertir:
private static string invertir(string frase)
{
string invertido = "";
for (int i = frase.Length - 1; i >= 0; i--)
invertido = invertido + frase.Substring(i, 1);
return invertido;
}
Determinar si es Palíndromo la frase:
private static void EsPalindrome(StringBuilder frase)
{
string[] palabras = frase.ToString().Split(' ');
if(verificar(0,palabras, palabras.Length) == 1)
Console.WriteLine("la frase es palindrome...");
else if(verificar(0,palabras, palabras.Length) == 3)
Console.WriteLine("Inténtalo de nuevo...");
else
Console.WriteLine("La frase no es palindrome...");
}
Función Verificar:
public static int verificar(int pos, string[] palabra, int largo)
{
try
{
//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 (1);
}
//si no entra al if en donde se comaparan los caracteres
return (0);
}
catch (Exception ex)
{
Console.WriteLine("Aun no existe una frase para verificar. Primero debes ingresar una frase");
return 3;
}
}
Creo que la explicación esta de más, ademas se pueden dar una idea de que hace cada función o método si revisan el comentario del otro post.
Aquí pueden descargar el código fuente:
Saludos!
Nota: no hago tareas de los lectores del blog, esta ves es porque no tengo otra cosa que hacer y el asunto es relativamente sencillo.

Comentarios recientes