[C#] Haciendo la tarea xD, string, palíndromo, invertir una cadena, etc.
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í:
https://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: "); }
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())); }
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.
QUE GRAAANDE!!
Yo al final de razonarlo lo hice a mi manera… aqui te dejo mi homework!!
Muchisimas gracias por estar!!
using System;
namespace OBLIGATORIO
{
class Program
{
public static void Main(string[] args)
{
string[] Frase={«»};
int num = 0;
bool palindromo=true;
bool seguir = true;
while (seguir)
{
Console.WriteLine();
Console.WriteLine(» MENU PRINCIPAL»);
Console.WriteLine();
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»);
Console.WriteLine(«****************************************************»);
Console.WriteLine();
Console.Write(«Ingrese su opción: «);
Console.WriteLine();
int menu = Convert.ToInt32(Console.ReadLine());
switch (menu)
{
case 6:
seguir = false;
Console.WriteLine(«Gracias por usar el programa!»);
Console.WriteLine(«Pulsa INTRO,para salir»);
Console.Read();
break;
case 1:
Console.Write(«Escriba el Nùmero de palabras que desea introducir : «);
num = Convert.ToInt32(Console.ReadLine());
if (num == 0)
{
Console.WriteLine(«Ingrese un nùmero diferente a cero»);
Console.ReadLine();
}
else
while (num == 0) ;
Frase = new string[num];
for (int i = 0; i < num; i++)
{
Console.Write("Escribe una palabra para elemento {0}: ", i);
Frase[i] = Console.ReadLine();
}
Console.Clear();
break;
case 2:
Mostrar(Frase);
break;
case 3:
Contar(Frase);
break;
case 4:
Invertir(Frase);
string[] Fraseinvertida = Invertir(Frase);
for (int i = 0; i < Fraseinvertida.Length; i++)
{
Console.WriteLine(Fraseinvertida[i]);
}
Console.ReadLine();
Console.Clear();
break;
case 5:
Palindromo(Frase);
palindromo = Palindromo(Frase);
if (palindromo == true)
{
Console.WriteLine("La Frase es un Palindromo");
Console.ReadLine();
Console.Clear();
}
else
Console.WriteLine("La Frase No es un Palindromo");
Console.ReadLine();
Console.Clear();
break;
default:
Console.WriteLine("ERROR: ingrese opciòn del 1 al 6");
break;
}
}
}
static void Mostrar(string[] a)
{
for (int i = 0; i < a.Length; i++)
{
Console.Write(a[i]+" ");
}
Console.ReadLine();
Console.Clear();
}
static string[] Invertir(string[]cadena)
{
string[] invertido = new string [cadena.Length];
for (int i = 0; i primero)
{
if (array[primero] == array[ultimo])
{
primero++;
ultimo–;
}
else
{
return false;
}
}
return true;
}
static void Contar(string[] array)
{
int numCaracteres = 0;
for (int i = 0; i < array.Length; i++)
{
numCaracteres += array[i].Length;
}
Console.WriteLine("Total de caracteres es: " + numCaracteres);
Console.ReadLine();
Console.Clear();
}
}
}
Taio,
de nada amigo, ya sabes que mientras pueda estare ayudando a los lectores del blog, gracias por comentar y espero que sigas escribiendo.
Saludos!
hi.. por fa me puedes ayudar explicandome linea por linea este codigo??
#include
#include
#include
#include
void main()
{
clrscr();
char num[10000],num2[10000];
int n,x,a=0,p=0,e=0;
char b=’ ‘;
printf(«\ningrese un numero:»);
gets(num);
n=strlen(num);
for(int u=0; u=0; x–)
printf(«\n num:%c»,num[x]);
x=0;
n=strlen(num2);
for(x=n-1; x>=0; x–)
{
if(num2[x]==num2[a])
p++;
a++;
}
if(p==n)
printf(«\nel numero ingresado es un palindromo»);
else
printf(«\nel numero ingresado no es palindromo»);
getche();
}
Hola, disculpa un consulta que tengo sobre esta publicacion. En la funcion invertir cuando dice primero ++ y ultimo -, que significa? Tengo dudas con esa parte. Despues todo ok. gracias saludos.!
Buen día Rodrigo,
Esta es la 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;
}
me imagino que te refieres a: i–, esto es un decremento, primero pones ++ para incrementer en uno al contador, en este caso i, pero en la función invertir, comienzo el conteo desde el final de la frase al inicio por eso es i–. Espero se entiendo y sino es así no dudes en escribir.
Exactamente estimado Norber, esa es la razòn:
con ++, incremento dentro del array
con — lo contrario.
Un saludo desde Uruguay.
hola, pos nuevo en todo esto¡¡¡¡ pero me pidieron que haga lo mismo en visual basic.net netooooo en el mas facil , AUXILIO ME PUEDEN AYUDAR
Amigo…
te paso un tip puedes usar el código que tengo pero conviertelo en esta página http://converter.telerik.com/
en donde pudes convertir código de C# a VB.NET
Saludos.!!!
hola!! sera q me pueden ayudar con este programa! por faa lo necesito urgente =S .. es hacer un programa con archivos en c.. q me diga si una palabra es palindrome o no … es decir yo voy a crear un archivo con una palabra cualqiera y luego cuando yo corra el programa q me diga si la palabra q yo escribi en el archivo es palindrome o no…
PD: las palabras palindrome son aqellas q se lean al derecho y al reves de la misma manera ejemplo radar
gracias se lo agradezcoo por faa!!
hola!! sera q me pueden ayudar con este programa! por faa lo necesito urgente =S .. es hacer un programa con archivos en c.. q me diga si una palabra es palindrome o no … es decir yo voy a crear un archivo con una palabra cualqiera y luego cuando yo corra el programa q me diga si la palabra q yo escribi en el archivo es palindrome o no…
PD: las palabras palindrome son aqellas q se lean al derecho y al reves de la misma manera ejemplo radar
gracias se lo agradezcoo por faa!!!!