jueves, 8 de julio de 2010

C# : Palindrome o No?

using System;

using System.Collections.Generic;

using System.Text;

namespace Palindrome

{

class Program

{

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 tendra 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("Intentalo 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;

}

}

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: ");

}

private static void MostrarTotalLetras(StringBuilder frase)

{

Console.WriteLine("El total de letras en la frase es: {0}",frase.ToString().Length);

}

private static void MostrarFrase(StringBuilder frase)

{

Console.WriteLine("La Frase que escribiste es: {0}",frase.ToString());

}

private static void FraseInvertida(StringBuilder frase)

{

Console.WriteLine("Frase Invertida: {0} ",invertir(frase.ToString()));

}

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;

}

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("Intentalo de nuevo...");

else

Console.WriteLine("La frase no es palindrome...");

}

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;

}

}

}

}

No hay comentarios:

Publicar un comentario

*Dejanos Tus Comentarios*