domingo, 16 de febrero de 2014

Cadenas de Caracteres en C#

Cadenas de Caracteres.

Es una secuencia ordenada de longitud arbitraria (no infinita) de elementos que pertenecen a cierto alfabeto, generalmente es una sucesión de caracteres (letras, números, u otros signos o símbolos), con los que se pueden formar palabras o cualquier tipo de información.

En C#, es una matriz de caracteres que se declara utilizando la palabra String que pertenece a la clase System, los Strings siempre se colocan entre comillas (“ ”), ya que esto significa una cadena de texto constante, en cambio las comillas simples de un char(‘ ‘) representan un único carácter.

La manera de declarar una cadena es:
Ø  string<nombre_de_la_cadena>;

La manera de declarar una cadena con datos predefinidos es:
Ø  string<nombre_de_la_cadena> = “Hola”;

Llevándolo hasta lo más simple, una cadena de texto es una secuencia de caracteres, tales como:
Ø  “Mi nombre es David”
Ø  “Los gatos tienen 7 vidas”
Ø  “Son $ 375, al 35% de interés”

Al momento de programanar, estas cadenas se pueden restringir a un tipo de dato determinado, si no se colocan restricciones al alfabeto una cadena esta podrá estar formada por cualquier combinación finita de todos los caracteres disponibles (letras de la ‘a’ a la ‘z’ o de la ‘A’ a la ‘Z’, los números del 0 al 9, el espacio en blanco, símbolos diversos como:!,#, $, €, &, etc.

Bajo este mismo ámbito, podría decirse que se trata de un tipo en particular de vector, de hecho son vectores de char, se utilizan normalmente como un tipo de dato predefinido, para palabras, frases o cualquier otra sucesión de caracteres que se almacenan en un vector de datos, o matriz de datos de una sola fila (es como un tipo de Arreglo Unidimensional o Array en inglés).

Manejo de caracteres

Se puede definir como un conjunto de métodos y sentencias que nos permite operar (reconocer, transformar, verificar, comparar, etc.) con los caracteres de una cadena de texto, entre estos conjuntos de métodos encontramos los más comunes como son:

ToLower( ): Transforma todos los caracteres de una cadena a minúsculas.
Ej:
stringstr = "MUESTRA DE TEXTO";
str = str.ToLower();
Console.WriteLine(str);
// devuelve el contenido de str en minúsculas "muestra de texto".

ToUpper( ): Transforma todos los caracteres de una cadena a minúsculas.
Ej:
stringstr = "muestra de texto";
str = str.ToUpper();
Console.WriteLine(str);
// devuelve el contenido de str en mayúsculas "MUESTRA DE TEXTO".

Operaciones.

Las operaciones con cadenas es uno de los aspectos principales en la programación, entre las básicas tenemos.
Ø  Asignar: Es lo más básico en lo que a operaciones se refiere, pues colocamos un dato o valor dentro de nuestra cadena.
Ø  Buscar SubCadenas: Es encontrar una sección o una cadena más pequeña dentro de una cadena de mayor longitud.
Ø  Cambiar letras: podemos cambiar los caracteres alfabéticos de mayúscula a minúscula y viceversa.
Ø  Concatenar: Es básicamente juntar dos cadenas para formar una cadena nueva.
Ø  Reemplazar Caracteres: Es buscar una subcadena dentro de un string y reemplazarlo por una cadena nueva.
Ø  Obtener Longitud: Nos informa acerca del tamaño de la cadena.
Ø  Comparar: Es verificar si una cadena es igual a otra o no.
Ø  Búsqueda: Es buscar una cadena dentro de otra cadena.
Ø  Dividir Cadenas: Es separar los elementos de una cadena para asignarlos cada uno a un vector, para esto se tiene que asignar un delimitador.

Cálculo de Longitud

Se utiliza la propiedad Length, lo que hace esta propiedad es simplemente contar cada carácter de la cadena desde el índice 0, que es donde comienza hasta llegar al final de la misma.

Ejemplo:
stringstr;
intintLongitud;
Console.Write("Ingresecaracteres: ");
str = Console.ReadLine();
intLongitud = str.Length;
Console.WriteLine("La longitud de la cadena es: "+ intLongitud);
// Devuelve el valor de la longitud de la cadena

Comparación de cadenas

Existen diferentes formas de comparar cadenas, pero al momento de hacerlo, se generara un resultado que indicará si una cadena es mayor o menor que otra o que las dos son iguales.Las reglas por las que se determina el resultado son distintas dependiendo de que se realice una comparación ordinal o una comparación dependiente de la referencia cultural.

Los dos valores de referencia cultural de una aplicación de Visual Basic o Visual C# determinan qué recursos se cargan para una aplicación y cómo se da formato a información como divisa, números y fechas.

Es importante utilizar el tipo correcto de comparación para cada tarea concreta.

Operadores ( ==, != )

Es la manera más sencilla de comparar cadenas,realizan una comparación distinguiendo entre mayúsculas y minúsculas.

string cadena1 = "Rojo";
string cadena2 = "Verde";
string cadena3 = "Rojo";

if (cadena1 == cadena3)
Console.WriteLine("Iguales");
if (cadena1 != cadena2)
Console.WriteLine("Diferentes");

Equals();

Sirve para determinar de manera sencilla si dos cadenas son iguales, distingue entre mayúsculas, minúsculas, caracteres y espacios, devuelve un valor de tipo bool (True o False), se puede usar desde una clase existente o como método estático.

// Desde una clase existente:
stringejEqual = "Mi texto en pantalla";
Console.WriteLine(ejEqual.Equals("Mi texto en pantalla"));
// Valor devuelto: True

// Como método estático:
string ejEqual1 = "Mi texto en pantalla";
string ejEqual2 = "Otro texto en pantalla";
Console.WriteLine(String.Equals(ejEqual1, ejEqual2));
// Valor devuelto: False

Compare( );

Éste es un método estático sobrecargado de la clase de cadena base. En su forma más común, este método puede utilizarse para comparar directamente dos cadenas basándose en el orden alfabético.

Compara dos objetos String especificados y devuelve un entero que indica su posición relativa en el criterio de ordenación.Esa comparación la devuelve en un int, el cual puede tener uno de tres valores:
Ø  1.-  La cadena 2 (ord2), se encuentra antes alfabéticamente que la cadena 1 (ord1).
Ø  0.-  Las dos cadenas se encuentran en el mismo orden alfabético.
Ø  -1.- La cadena 1 (ord1), se encuentra antes alfabéticamente que la cadena 2(ord2).

Ej:
string ord1 = "Alfabético";
string ord2 = "Orden";
int resultado;
resultado = string.Compare(ord1, ord2);
Console.WriteLine(resultado);
// Valor devuelto: -1

CompareOrdinal( ):

Realiza una comparación de cadenas basada en ASCII, mayúsculas y minúsculas.

La finalidad principal del método CompareOrdinal es que se utilice para la ordenación o clasificación de cadenas. El método CompareOrdinal no debe utilizarse para comprobar la igualdad (es decir, para buscar explícitamente un valor devuelto que sea 0 sin tener en cuenta si una cadena es menor o mayor que otra).

Este método devuelve valores int, los que pueden ser:
Ø  Positivos.- La cadena 1, viene después que la cadena 2 en el código ASCII.
Ø  0.- Las cadenas son idénticas.
Ø  Negativos.- La cadena 1, se encuentra antes que la cadena 2 en el código ASCII.

La cantidad de números determinan la distancia que hay entre una cadena a otra en el código ASCII.

Ej:
string compOr1 = "Probando C#";
string compOr2 = "C# Prueba";
Console.WriteLine(string.CompareOrdinal(compOr1, compOr2));
// Valor devuelto: 13

CompareTo( ):

Pertenece a la clase System.String, devuelve un valor entero, basado en si un objeto, en este caso unacadena es menor que (<) o mayor que (>) otra. De forma similar al Compare, devuelve la comparación en un int, el que puede tener uno de tres valores:
Ø  1.- Si el objeto que invoca al método es mayor al objeto que se pasa por argumento.
Ø  0.-Si los objetos son iguales.
Ø  -1.- Si el objeto que invoca al método es menor al objeto que se pasa por argumento.

Al comparar las cadenas, se utiliza el valor Unicode, y lasminúsculas tienen un valor menor que las mayúsculas.

Comparala cadena que encapsula el objeto de cadena actual con otra cadena u objeto. Los valores devueltos de este método son idénticos a los que devolvía el método Compare.

La finalidad principal del método CompareTo es que se utilice para la ordenación o clasificación de cadenas. El método CompareTo no debe utilizarse para comprobar la igualdad (es decir, para buscar explícitamente un valor devuelto que sea 0 sin tener en cuenta si una cadena es menor o mayor que otra).

Ej:
string compTo1 = "DAVID";
string compTo2 = "David";
int res = compTo1.CompareTo(compTo2);

if (res > 0)
Console.WriteLine("Mayor que");
elseif (res < 0)
Console.WriteLine("Menor que");
else
Console.WriteLine("Es igual");
// En este caso devuelve: 1 que es Mayor que.

Ej.
int num1 = 5787,
    num2 = 5788,
comp;

comp = num1.CompareTo(num2);
Console.WriteLine(comp);
// Valor devuelto -1


StartWith y EndWith

StartWith

Se puede usar para determinar si un objeto de cadena comienza con los mismos caracteres que forman otra cadena, este método distingue entre mayúsculas y minúsculas. Devuelven valores bool, true si el objeto de cadena actual comienza con la cadena que se pasa y false si no lo hace.

// Ejemplo StartWhith False
stringstrFalse1 = "Hola a todos, alumnos del grupo 2";
stringstrFalse2 = "Hello to all, students of the class 2";
Console.WriteLine(strFalse1.StartsWith(strFalse2));
// Valor devuelto: False.

// Ejemplo StartWhith True
string strTrue1 = "Hola a todos, alumnos del grupo 2";
string strTrue2 = "Hola a todos";
Console.WriteLine(strTrue1.StartsWith(strTrue2));
// Valor devuelto: True.

EndWith

Compara la cadena que se pasa con los caracteres del final del objeto de cadena actual. También devuelve un valor booleano.

// Ejemplo EndWhith False
string strFalse1 = "Hola a todos, alumnos del grupo 2";
string strFalse2 = "Hola a todos";
Console.WriteLine(strFalse1.EndsWith(strFalse2));
// Valor devuelto: False.

// Ejemplo EndWhith True
string strTrue1 = "Hola a todos, alumnos del grupo 2";
string strTrue2 = "grupo 2";
Console.WriteLine(strTrue1.EndsWith(strTrue2));
// Valor devuelto: True.

IndexOf y LastIndexOf

Estos métodos distinguen entre mayúsculas y minúsculas, realizan un conteo desde la primera posición de la cadena (índice 0) hasta llegar a su objetivo, devuelven valores tipo int.

IndexOf

Determina la posición de la primera aparición de un carácter concreto dentro de la cadena. Cuenta desde el inicio y devuelve la posición del carácter que se pasa. Si no encuentra el carácter devuelve -1.

LastIndexOf

Es similar al IndexOf, con la diferencia que devuelve la posición de la última instancia de un carácter concreto en la cadena.

Ejemplos:
// IndexOf
stringstrIndxOff = "Hola a todos";
Console.WriteLine(strIndxOff.IndexOf('o'));
// Valor devuelto: 1

// LastIndexOf
stringstrIndxOff = "Hola a todos";
Console.WriteLine(strIndxOff.LastIndexOf('o'));
// Valor devuelto: 10

Concatenación:

Concatenar es unir o anexar una secuencia a otra.

Operador ( + )

Es la manera más sencilla de concatenar, debido que posee una sobrecarga nos permite hacer sumas aritméticas así como también concatenaciones.

Ejemplo:
stringuserName;
string date = DateTime.Today.ToShortDateString();
Console.Write("Ingrese su nombre: ");
userName = Console.ReadLine();
stringstr = "Hola " + userName + ". Hoy es " + date + ".";
System.Console.WriteLine(str);
str += " como estas el día de hoy?";
System.Console.WriteLine(str);

Concat

1.       De manera similar que el operador ( + ), realiza una concatenación de cadenas para formar una nueva.

Ejemplo:
stringaStr = "A",
bStr = "B",
cStr = "C",
dStr = "D";
stringresultado;
resultado = string.Concat(aStr, bStr, cStr, dStr);
Console.WriteLine(resultado);
// Devuelve como resultado la concatenación de todos los string.

2.       Concatena elementos en una matriz String especificada.

Ejemplo:
// Hacemos un arreglo de cadenas, incluyendo los espacios en las palabras.
string[] s = { "Hola ", "y ", "bienvenido ", "a ", "esta ", "demostración! " };

// Coloca todas las cadenas juntas
Console.WriteLine(string.Concat(s));

Extracción de SubCadenas.

Mediante los métodos IndexOf, Substring y la propiedad Length se pueden extraer datos de una cadena sin afectar su integridad.

Ejemplo:
string palabra = "Esto es para probar"; // Frase inicial
string sacar = "para"; // Palabra a sacar
string recupero; //espacio para almacenar
int inicio, final; // punto de inicio y final
inicio = palabra.IndexOf(sacar); // obtencion punto de inicio
final = sacar.Length; // obtención punto final
recupero = palabra.Substring(inicio, final);
// extraigo la cadena con substring









Insertar caracteres:

Básicamente es la acción de insertar una cadena nueva dentro de otra cadena, para esto necesitamos de un índice que indique el lugar desde dónde se insertará la nueva cadena.

Insert ( ):

Inserta una cadena dentro de otra.

Sintaxis:
<Cadena original> = <Cadena original> .Insert(intIndexOf, “Nueva cadena”;

Ejemplo:
stringstrInsert = "Este es un texto de prueba";
strInsert = strInsert.Insert(5, "Introductorio ");
Console.WriteLine(strInsert);
// Devuelve la cadena con la nueva cadena anexada.

Borrado de Cadenas:

Mediante (“ ”):

Es la forma más sencilla de borrar una cadena completa, lo que hace es reemplazar su contenido por un espacio en blanco.

Ejemplo:
StringstrLleno = "Este es un texto de prueba";
strLleno = "";
// Devuelve la cadena vacía

Empty:

Este método representa la cadena vacía, este campo es de solo lectura y no lleva parámetros porque no son invocables.

Ejemplo:
stringstrEmpty = "Este es un texto de prueba";
strEmpty = string.Empty;
// Devuelve la cadena vacía

Trim( ):

Borra todos los espacios en blanco al inicio y al final de la una cadena determinada.

Ejemplo:
stringstrTexto = "     de borrado       ";
stringstrCont;
strCont = "Proceso " + strTexto + " de cadenas";
Console.WriteLine(strCont);
stringstrTrim = strTexto.Trim();
strCont = "Proceso " + strTrim + " de cadenas";
Console.WriteLine(strCont);
// Devuelve vacíos los extremos de la cadena strTexto




Remove():

Remove(intstartIndex, intlength): Elimina todos los caracteres de la cadena, a partir de una posición especificada hasta la última posición o hasta una posición especificada.

intstartIndex.-  Posición de base cero a partir de la cual comienza la eliminación de caracteres.
intlength.- Número de caracteres que se van a eliminar.
Sintaxis:<Nombre de la variable> .Remove(<Posición de inicio>, <Posición final>);

Ej:
Stringstr = "Muestra de texto", str1;
str1 = str.Remove(0,8);
Console.WriteLine(str1);
// Elimina todos los caracteres después de la posición 0 hasta la 9, Valor devuelto, "de texto"
// M u e s t r a <espacio>d e ...
// 1 2 3 4 5 6 7     8     9 10...

Cambio de Cadena.

Cambiaruna cadena es modificar todo su contenido o solo parte del mismo, la más común es reasignándole un nuevo valor en determinado momento del programa, y en otras ocasiones cambiando parte de su contenido buscando caracteres en específico o como una cadena es similar a un vector unidimensional debemos de trabajar mediante índices.

MetodoReplace

Replace( ): Este método se lo puede utilizar siempre y cuando deseamos remplazar un carácter o una cadena de caracteres por otra. Se reemplazarán todos los caracteres encontrados.

Sintaxis: <Nombre de variable> .Replace (<Caracteres antiguos>, <Caracteres nuevos>)

Ejemplo:
stringstr = "Muestra di tixto", str1;
str1 = str.Replace("di tixto", "de prueba");
Console.WriteLine(str);
Console.WriteLine(str1);
// Devuelve: “Muestra de prueba"

Clase StringBuilder

Sytem.Text.StringBuilder, funciona de manera similar a String pero permite la modificación de sus cadenas en tanto que estas no se comparten en memoria. Para crear objetos de este tipo basta pasar como parámetro de su constructor el objeto String que contiene la cadena a representar mediante un StringBuilder, y para convertir un StringBuilder en String siempre puede usarse su método ToString() heredado de System.Object.

La clase StringBuilder crea un búfer de cadena que proporciona un mayor rendimiento si el programa realiza muchas manipulaciones de cadenas. La cadena StringBuilder también permite reasignar los caracteres individuales, algo que el tipo de datos String integrado no admite.

Ejemplo:
System.Text.StringBuildersb = newSystem.Text.StringBuilder("Rat: ideal pet");
sb[0] = 'C';
System.Console.WriteLine(sb.ToString());
System.Console.ReadLine();

martes, 19 de noviembre de 2013

Ejercicios Propuestos C# 01 (Resueltos)

Ejercicios resueltos de la plataforma C#, ya están revisados y son totalmente funcionales, son para evaluación y para comprender un poco la lógica de funcionamiento del sistema, cuando los vean por favor intenten comprenderlos y no solamente copien pues el éxito es aprender y no copiar quedándonos con la duda de lo que hacemos, suerte pequeños programadores.

01.- Todos los lunes, miércoles y viernes, una persona corre la misma ruta y cronometra los tiempos obtenidos. Determinar el tiempo promedio que la persona tarda en recorrer la ruta en una semana cualquiera.


namespace Problema01
{
    class Program
    {
        static void Main(string[] args)
        {
            double Lun, Mar, Mi, total;
            Console.WriteLine("Ingrese los tiempos de recorrido en minutos");
            Console.Write("Tiempo recorrido el Lunes    : ");
            Lun = Double.Parse(Console.ReadLine());
            Console.Write("Tiempo recorrido el Martes   : ");
            Mar = Double.Parse(Console.ReadLine());
            Console.Write("Tiempo recorrido el Miércoles: ");
            Mi = Double.Parse(Console.ReadLine());
            Console.WriteLine("El promedio de tiempo es : {0}", total = (Lun + Mar + Mi) / 3);
        }
    }
}

02.- Un vendedor recibe un sueldo base más un 10% extra por comisión de sus ventas, el vendedor desea saber cuanto dinero obtendrá por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibirá en el mes tomando en cuenta su sueldo base y comisiones.


namespace Problema02
{
    class Program
    {
        static void Main(string[] args)
        {
            double sBase, venta1, venta2, venta3, comision1, comision2, comision3, tComisiones, tSueldo;
            string nomVendedor;

            Console.Write(" Ingrese el nombre del vendedor : ");
            nomVendedor = Console.ReadLine();

            Console.Write("\n Ingrese el sueldo base : ");
            sBase = Double.Parse(Console.ReadLine());

            Console.Write("\n Ingrese valor de primera venta : ");
            venta1 = Double.Parse(Console.ReadLine());
            comision1 = venta1 * 0.10;

            Console.Write("\n Ingrese valor de segunda venta : ");
            venta2 = Double.Parse(Console.ReadLine());
            comision2 = venta2 * 0.10;

            Console.Write("\n Ingrese valor de tercera venta : ");
            venta3 = Double.Parse(Console.ReadLine());
            comision3 = venta3 * 0.10;

            tComisiones = comision1 + comision2 + comision3;
            tSueldo = sBase + tComisiones;

            Console.WriteLine("\n El total de comisiones es de : {0:C2}", tComisiones);
            Console.WriteLine(" El sueldo base mas las comisiones es de {0:C2}", tSueldo);
        }
    }
}

Nota: {0:C2}, es una estructura que nos envía nuestro resultado en tipo de dato de moneda.

03.- Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cuanto deberá pagar finalmente por su compra.

namespace Problema03
{
    class Program
    {
        static void Main(string[] args)
        {
            double vCompra, descuento, total;
            Console.Write(" Ingrese el valor de la compra : ");
            vCompra = Double.Parse(Console.ReadLine());
            descuento = vCompra * 0.15;
            total = vCompra - descuento;
            Console.WriteLine(" El valor de descuento es : {0:c2}", descuento);
            Console.WriteLine(" El valor total de la compra es : {0:c2}", total);
        }
    }
}

04.- Un alumno desea saber cual será su calificación final en la materia de Algoritmos, dicha calificación se compone de los siguientes porcentajes:
 * 55% del promedio de sus tres calificaciones parciales.
 * 30% de la calificación del examen final.
 * 15% de la calificación de un trabajo final.

namespace Problema04
{
    class Program
    {
        static void Main(string[] args)
        {
            double notaPar1, notaPar2, notaPar3, notaExamen,
                notaTrabajo, tParciales, pEx, pNf;
            string nombreAlumno;

            Console.Write("Nombre del alumno : ");
            nombreAlumno = Console.ReadLine();

            Console.WriteLine("\n Ingrese notas Parciales");
            Console.Write("\n Nota No. 1 : ");
            notaPar1 = Double.Parse(Console.ReadLine());

            Console.Write(" Nota No. 2 : ");
            notaPar2 = Double.Parse(Console.ReadLine());

            Console.Write(" Nota No. 3 : ");
            notaPar3 = Double.Parse(Console.ReadLine());

            Console.Write("\n Ingrese nota del examen : ");
            notaExamen = Double.Parse(Console.ReadLine());
            Console.Write(" Ingrese nota del trabajo final : ");
            notaTrabajo = Double.Parse(Console.ReadLine());

            tParciales = ((notaPar1+notaPar2+notaPar3)/3)*0.55;
            pEx = notaExamen * 0.30;
            pNf = notaTrabajo * 0.15;

            Console.WriteLine("\n Las notas parciales equivalen a      : {0:G2}", tParciales);
            Console.WriteLine(" Las notas del examen equivale a        : {0:G2}", pEx);
            Console.WriteLine(" Las notas del trabajo final equivale a : {0:G2}", pNf);

        }
    }
}

05.- Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes.


namespace Problema05
{
    class Program
    {
        static void Main(string[] args)
        {
            double nVarones, nMujeres, nTotal, pVarones, pMujeres;
            Console.Write("Escriba la cantidad de varones: ");
            nVarones= Double.Parse(Console.ReadLine());
            Console.Write("Escriba la cantidad de mujeres: ");
            nMujeres = Double.Parse(Console.ReadLine());
            nTotal = nVarones + nMujeres; //Suma de la cantidad de personas.
            pVarones = nVarones * 100 / nTotal; //Cálculo del porcentaje de Marones.
            pMujeres = nMujeres * 100 / nTotal; //Cálculo del porcentaje de Mujeres.
            Console.WriteLine("De {0} estudiantes, un {1}% son varones y un {2}% mujeres",
                nTotal, Math.Round(pVarones,0), Math.Round(pMujeres,0)); 
        }
    }
}

Nota: Math.Round, método para devolver valores redondeados.

06.- Realizar un algoritmo que calcule la edad de una persona.

namespace Problema06
{
    class Program
    {
        static void Main(string[] args)
        {
            int anioActual, anioNacimiento, edad;
            string nombre;
            Console.Write("Ingrese el nombre de la persona: ");
            nombre = Console.ReadLine();
            Console.Write("¿En qué año estámos?: ");
            anioActual = Int32.Parse(Console.ReadLine());
            Console.Write("¿Cuál es el año de nacimiento?: ");
            anioNacimiento = Int32.Parse(Console.ReadLine());
            Console.WriteLine("{0} tiene {1} años de edad", nombre, 
                edad = anioActual - anioNacimiento);
        }
    }
}

07.- Dada una cantidad en pesos, obtener la equivalencia en dólares, asumiendo que la unidad cambiaria es un dato desconocido.

namespace Programa07
{
    class Program
    {
        static void Main(string[] args)
        {
            double cPesos, eqDolar, uCambio;

            Console.Write(" Ingrese cantidad en pesos : ");
            cPesos = Double.Parse(Console.ReadLine());

            Console.Write("\n Ingrese unidad cambiaria a dólares : ");
            uCambio= Double.Parse(Console.ReadLine()); //Lee la unidad cambiaria...

            eqDolar = cPesos / uCambio; // Divide la cantidad en pesos para la unidad de cambio.

            Console.WriteLine("\n {0} pesos equivalen a {1:C2} dólares", cPesos, eqDolar);
        }
    }
}

08.- Leer un número y escribir el valor absoluto del mismo.

namespace Problema08
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                decimal num;
                Console.Write("Escriba un numero : ");
                num = Decimal.Parse(Console.ReadLine());

                Console.WriteLine("El valor absoluto de |{0}| es {1}",
                    num, Math.Abs(num)); 
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

        }
    }
}

Nota: Math.Abs, es un método para obtener el valor absoluto de un número, Try-Catch, método para manipular las excepciones desde nuestro programa.

09.- La presión, el volumen y la temperatura de una masa de aire se relacionan por la formula:
 * masa = (presión * volumen)/(0.37 * (temperatura + 460))


namespace Programa09
{
    class Program
    {
        static void Main(string[] args)
        {
            double nPresion, nVolumen, nTemperatura, masa;

            Console.Write("Ingrese la presión     : ");
            nPresion = Double.Parse(Console.ReadLine());

            Console.Write("Ingrese el volumen     : ");
            nVolumen = Double.Parse(Console.ReadLine());

            Console.Write("Ingrese la temperatura : ");
            nTemperatura = Double.Parse(Console.ReadLine());

            masa = (nPresion * nVolumen) / (0.37 * (nTemperatura + 460));

            Console.WriteLine("La masa es = {0}", masa);

        }
    }
}

10.- Calcular el número de pulsaciones que una persona debe tener por cada 10 segundos de ejercicio, si la formula es:
 * num. pulsaciones = (220 - edad)/10


namespace Programa10
{
    class Program
    {
        static void Main(string[] args)
        {
            int edad;
            double nPulsaciones;

            Console.Write("Escriba su edad : ");
            edad = Int32.Parse(Console.ReadLine());

            nPulsaciones = (220 - edad) / 10;

            Console.WriteLine("El número de pulsaciones es {0}", nPulsaciones);
        }
    }
}

11.- Calcular el nuevo salario de un obrero si obtuvo un incremento del 25% sobre su salario anterior.


namespace Programa11
{
    class Program
    {
        static void Main(string[] args)
        {
            double salAnt, salNuevo;
            string nomObrero;
            Console.Write(" Ingrese el nombre del obrero : ");
            nomObrero = Console.ReadLine();
                        
            Console.Write("\n Escriba su salario anterior : ");
            salAnt = Double.Parse(Console.ReadLine());

            salNuevo = salAnt + salAnt * 0.25;
            Console.WriteLine("\n El nuevo salario a recibir es : {0:C2}", salNuevo);
        }
    }
}

12.- En un hospital existen tres áreas: Ginecología, Pediatría, Traumatologia, el presupuesto anual del hospital se reparte conforme a la sig. tabla:
Área                  Porcentaje del presupuesto
Ginecología         40%
Traumatologia    30%
Pediatría             30%
Obtener la cantidad de dinero que recibirá cada área, para cualquier monto presupuestal.

 
namespace Problema12
{
    class Program
    {
        static void Main(string[] args)
        {
            double montoPresupuesto, areaGineco, areaTrauma, areaPedia;
            Console.Write("Ingrese el presupuesto anual para el hospital: ");
            montoPresupuesto = Double.Parse(Console.ReadLine());
            Console.WriteLine("El monto de presupuesto para Ginecología es de   {0:C2}", 
                areaGineco=montoPresupuesto * 0.40);
            Console.WriteLine("El monto de presupuesto para Traumatología es de {0:C2}",
                areaTrauma = montoPresupuesto * 0.30);
            Console.WriteLine("El monto de presupuesto para Pedriatría es de    {0:C2}",
                areaPedia = montoPresupuesto * 0.30);
        }
    }
}

13.- El dueño de una tienda compra un artículo a un precio determinado. Obtener el precio en que lo debe vender para obtener una ganancia del 30%.

 
namespace Programa13
{
    class Program
    {
        static void Main(string[] args)
        {
            double precArt, precVenta;
            
            Console.Write("\n Ingrese el valor del artículo : ");
            precArt = Double.Parse(Console.ReadLine());

            precVenta = precArt + precArt * 0.30;
            Console.WriteLine("\n Precio a vender con ganancia de 30% : {0:C2}", precVenta);
        }
    }
}

14.- Suponga que un individuo desea invertir su capital en un banco y desea saber cuanto dinero ganara después de un mes si el banco paga a razón de 2% mensual.


namespace Problema14
{
    class Program
    {
        static void Main(string[] args)
        {
            double capital, ganancia;
            Console.Write("Ingrese el capital para invertir : ");
            capital = Double.Parse(Console.ReadLine());
            ganancia = (capital * 2) / 100; //Cálculo del 2% por un mes.
            Console.WriteLine("Ganancia por 2% interes en un mes: {0:C}", ganancia);  
            Console.WriteLine("Capital total en un mes: {0:C}",
                ganancia + capital);
        }
    }
}

15.- Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas invierte una cantidad distinta, obtener el porcentaje que cada quien invierte con respecto a la cantidad total invertida.


namespace Problema15
{
    class Program
    {
        static void Main(string[] args)
        {
            double cantPer1, cantPer2, cantPer3, cantTot;
            string persona1, persona2, persona3;

            Console.CursorTop = 3;
            Console.Write("Ingrese el nombre de la primera persona: ");
            persona1 = Console.ReadLine();
            Console.Write("Ingrese el monto de su inversión: ");
            cantPer1 = Double.Parse(Console.ReadLine());

            Console.CursorTop = 6;
            Console.Write("Ingrese el nombre de la segunda persona: ");
            persona2 = Console.ReadLine();
            Console.Write("Ingrese el monto de su inversión: ");
            cantPer2 = Double.Parse(Console.ReadLine());

            Console.CursorTop = 9;
            Console.Write("Ingrese el nombre de la tercera persona: ");
            persona3 = Console.ReadLine();
            Console.Write("Ingrese el monto de su inversión: ");
            cantPer3 = Double.Parse(Console.ReadLine());

            cantTot = cantPer1 + cantPer2 + cantPer3;
            double porcentaje = cantTot;
            
            porcentaje = cantPer1 * 100 / cantTot;
            Console.CursorTop = 12;
            Console.WriteLine("{0} realizó el {1}% de la inversión", 
                persona1, Math.Round(porcentaje,2)); 

            porcentaje = cantPer2 * 100 / cantTot;
            Console.CursorTop = 14;
            Console.WriteLine("{0} realizó el {1}% de la inversión", 
                persona2, Math.Round(porcentaje, 2));

            porcentaje = cantPer3 * 100 / cantTot;
            Console.CursorTop = 16; 
            Console.WriteLine("{0} realizó el {1}% de la inversión", 
                persona3, Math.Round(porcentaje, 2));

        }
    }
}

16.- Un alumno desea saber cual será su promedio general en las tres materias mas difíciles que cursa y cual será el promedio que obtendrá en cada una de ellas. Estas materias se evalúan como se muestra a continuación:
 * La calificación de Matemáticas se obtiene de la sig. manera:
 * Examen 90%
 * Promedio de tareas 10%
 * En esta materia se pidió un total de tres tareas.


 * La calificación de Física se obtiene de la sig. manera:
 * Examen 80%
 * Promedio de tareas 20%
 * En esta materia se pidió un total de dos tareas.


 * La calificación de Química se obtiene de la sig. manera:
 * Examen 85%
 * Promedio de tareas 15%
 * En esta materia se pidió un promedio de tres tareas.


namespace Programa16
{
    class Program
    {
        static void Main(string[] args)
        {
            double tareaMate_1, tareaMate_2, tareaMate_3, exMate, pMater, promMate;

            Console.CursorLeft = 30;
            Console.WriteLine("NOTAS DE MATEMATICAS");
            
            Console.Write(" Nota de tarea No. 1 : ");
            tareaMate_1 = Double.Parse(Console.ReadLine());
            Console.Write(" Nota de tarea No. 2 : ");
            tareaMate_2 = Double.Parse(Console.ReadLine());
            Console.Write(" Nota de tarea No. 3 : ");
            tareaMate_3 = Double.Parse(Console.ReadLine());

            Console.Write("\n Nota de examen : ");
            exMate = Double.Parse(Console.ReadLine());

            pMater = ((tareaMate_1 + tareaMate_2 + tareaMate_3) / 3) * 0.1;
            exMate = exMate * 0.9;

            Console.WriteLine("\n El promedio de matemáticas es : {0:G2}", 
                promMate = exMate + pMater);

            double tareaFisica_1, tareaFisica_2, exFisica, pFisica, promFisica;

            Console.CursorLeft = 32;
            Console.WriteLine("NOTAS DE FISICA");

            Console.Write(" Nota de tarea No. 1 : ");
            tareaFisica_1 = Double.Parse(Console.ReadLine());
            Console.Write(" Nota de tarea No. 2 : ");
            tareaFisica_2 = Double.Parse(Console.ReadLine());

            Console.Write("\n Nota de examen : ");
            exFisica = Double.Parse(Console.ReadLine());

            pFisica = ((tareaFisica_1 + tareaFisica_2) / 2) * 0.2;
            exFisica = exFisica * 0.8;

            Console.WriteLine("\n El promedio de matemáticas es : {0:G2}",
                promFisica = exFisica + pFisica);

            double tareaQuim_1, tareaQuim_2, tareaQuim_3, exQuim, pQuim, promQuim;

            Console.CursorLeft = 31;
            Console.WriteLine("NOTAS DE QUIMICA");

            Console.Write(" Nota de tarea No. 1 : ");
            tareaQuim_1 = Double.Parse(Console.ReadLine());
            Console.Write(" Nota de tarea No. 2 : ");
            tareaQuim_2 = Double.Parse(Console.ReadLine());
            Console.Write(" Nota de tarea No. 3 : ");
            tareaQuim_3 = Double.Parse(Console.ReadLine());

            Console.Write("\n Nota de examen : ");
            exQuim = Double.Parse(Console.ReadLine());

            pQuim = ((tareaQuim_1 + tareaQuim_2 + tareaQuim_3) / 3) * 0.15;
            exQuim = exQuim * 0.85;

            Console.WriteLine("\n El promedio de matemáticas es : {0:G2}",
                promQuim = exQuim + pQuim);

            double pGeneral;
            Console.WriteLine("\n El promedio general de las tres materias es {0:G2} ", 
                pGeneral = (promMate + promFisica + promQuim)/3);
        }
    }
}