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*