Autor Tema: funciones Cadenas de caracteres en C# contar palabras y vocales .NET expresiones  (Leído 13844 veces)

el_noobster

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Ejercicio desarrollado en C#:

Dado un texto de hasta 300 caracteres, desarrollar lo siguiente

a) Calcular el porcentaje de vocales presentes en el texto
b) Contar cantidad de palabras en el texto
c) Verificar el porcentaje de dígitos y de letras que existen en el texto
d) Eliminar todos los espacios y sustituirlos por "_"
e) Imprimir el texto al revés


Que esto quede para la posteridad :D . Lamento el desorden; no separe el codigo por clases ni nada de eso, ya me acostumbre asi xD Sin embargo trato de explicar en comentarios lo que hace cada cosa... bueno, no del todo, pero puede que asi resulte mas amigable el codigo.

 
Código: [Seleccionar]
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

public void desarma_palabras(){

            //decalaracion de variables
            int fin, count = 0, inicio = 0;
            char aux;
            Double cuenta_vocales = 0;
            String palabra = "", vocales = "AÁaáEÉeéIÍiíOÓoóUÚÜuúü", cadena= "", con_piso = "", con_regex;
           
            //lectura
            Console.WriteLine("Ingrese un texto cualquiera");
            Console.WriteLine();
            palabra = Console.ReadLine();
             
             char[] matriz = new char[palabra.Length];
            List<String> lista = new List<String>();

            //validar que no se ingrese una cadena de texto una o con espacios en blanco
            while (string.IsNullOrWhiteSpace(palabra)){
                Console.WriteLine("Por favor ingrese por lo menos una palabra: ");
                palabra = Console.ReadLine();
            }

            count++; //si sale del bucle es porque minimamente hay una palabra
            palabra = palabra.Trim(); //Elimina los espacios en blanco ubicados al comienzo y al final del texto ingresado
            fin = palabra.Length - 1;
            con_regex = Regex.Replace(palabra, "[^a-zA-Z0-9á-úÁ-Úü]+", "", RegexOptions.Compiled); //este metodo elimina todo lo que no sean letras o numeros, o lo que no se especifique en el rango. Esto para saber con cuantas letras y numeros contamos

            //Este bucle recorre "palabra"

            for (int i = 0; i < palabra.Length; i++){

                //Este pequeño bloque de codigo voltea el texto ingresado y lo almacena en cadena
                aux = palabra[inicio];

                matriz[inicio] = palabra[fin];
                matriz[fin] = aux;
                inicio++;
                fin--;
                cadena = cadena + Convert.ToString(matriz[i]);

               //este bucle recorre las vocales que hay en la cadena "vocales", precisamente
                for (int j = 0; j < vocales.Length; j++)
                {
                    if (palabra[i] == vocales[j])
                    {
                        cuenta_vocales++;
                        lista.Add(Convert.ToString(palabra[i]));
                    }
                }
            }

            //volvemos a recorrer "palabra"
            for (int i = 0; i < palabra.Length; i++){   

                //almacena cada digito de "palabra"
                char a = palabra[i];

                //si hay un espacio en blanco...
                if (a == ' ')
                {             
                    //recorremos el siguiente caracter
                    for (int j = i + 1; j < i + 2; j++)
                    {

                               //Si el siguiente caracter es diferente de lo que hay en el actual caracter, o sea un espacio en blanco...
                              if (palabra[i] != palabra[i + 1])
                        {
                            //...el contador de palabras aumenta
                            count++;
                        } 
                    }
                }
            }

            Console.WriteLine();

            //a) Calcular el porcentaje de vocales presentes en el texto
            double porciento_vocales = (cuenta_vocales * 100) / palabra.Length;
            Console.WriteLine(" a) El porcentaje de vocales corresponde a un: " + Math.Round(porciento_vocales, 2) + " %");

            //b) Contar cantidad de palabras en el texto
            if (count == 1)
            {

                Console.WriteLine(" b) Hay solo un palabra");
            }

            else{

                Console.WriteLine(" b) La cantidad de palabras que hay en el texto es: " + count);
            }

            //c) Verificar el porcentaje de dígitos y de letras que existen en el texto
            double tamaño_regex = con_regex.Length;
            double porciento_digito_letra = ((tamaño_regex * 100) / palabra.Length); //"Tamaño_regex", como mencione antes, almacena solo letras y numeros, por tanto lleva su cuenta. Todo sobre la cantidad de digitos en total
            Console.WriteLine(" c) El porcentaje de digitos/letras que hay en el texto es: " + Math.Round(porciento_digito_letra, 2)  + " %");

            //d) Eliminar todos los espacios y sustituirlos por "_"
            con_piso = palabra.Replace(" ", "_");
            Console.WriteLine(" d) El texto con piso queda: " + con_piso);

            //e) Imprimir el texto al reves
            Console.Write(" e) El texto al reves queda: " + cadena);
        }
« Última modificación: 25 de Junio 2017, 12:46 por Ogramar »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".