void AgregarDatosExcel() { object opcional = Type.Missing; var excelAplicacion = new Excel.Application(); excelAplicacion.Visible = true; // Agregar un nuevo libro excelAplicacion.Workbooks.Add(opcional); for (int h = 1; h < 4; h++) { // Agregar una nueva hoja al libro excelAplicacion.Worksheets.Add(opcional, opcional, opcional, opcional); // Establecer un objeto worksheet que apunte hacia la hoja activa Excel._Worksheet worksheetHoja = (Excel.Worksheet)excelAplicacion.ActiveSheet; // Colocar encabezados en las celdas A1 y B1. worksheetHoja.Cells[1, "A"] = "Columna 1"; worksheetHoja.Cells[1, "B"] = "Columna 2"; // Colocar nombre a la hoja worksheetHoja.Name = "Hoja nmero " + h.ToString(); // Agregar datos en las celdas for (int i = 2; i < 101; i++) { worksheetHoja.Cells[i, "A"] = i; worksheetHoja.Cells[i, "B"] = 2 * i; } } }
class Programa { public static void Main(string[] args) { int[] numero = new int[]{12, 25, 10, 5}; Arreglo.QuitarElemento(ref numero, 0); for (int i = 0; i < numero.GetLength(0); i++) { Console.WriteLine(numero[i].ToString());
} Console.ReadKey(true); } } class Arreglo { public static void QuitarElemento<Tipo>(ref Tipo[] vector, int indice) { int tamanoVector = vector.GetLength(0); if (indice >= tamanoVector | indice < 0) throw new Exception("El valor del ndice est por " + "fuera del rango permitido"); Tipo[] auxiliar = new Tipo[tamanoVector - 1]; int j = 0; for (int i = 0; i < tamanoVector; i++) { if (i != indice) { auxiliar[j] = vector[i]; j++; } } vector = auxiliar; } }
Descargar
Sobrecarga de operadores
La sobrecarga de operadores es una propiedad que hace parte del polimorfismo que debe ser capaz de implementar un buen lenguaje orientado a objetos. Esta propiedad hace que un operador se comporte de acuerdo al tipo de operandos a los que se aplique...
Descargar
La siguiente clase permite definir variables que calculan la diferencia entre dos instantes de tiempo establecidos:
public class Intervalo { DateTime fecha1; DateTime fecha2; public Intervalo() { } public DateTime Fecha1 { set { fecha1 = value; } } public DateTime Fecha2 { set { fecha2 = value; } } // Retorna la diferencia entre las dos fechas public TimeSpan Diferencia { get { return fecha1 - fecha2; } } }
El siguiente ejemplo muestra un mtodo asociado al evento clic de un botn de comando, donde se utiliza la clase anterior para encontrar la diferencia entre dos fechas conocidas: void Button1Click(object sender, EventArgs e) { Intervalo tiempo = new Intervalo();
tiempo.Fecha1 = Convert.ToDateTime("21/05/2009"); tiempo.Fecha2 = Convert.ToDateTime("22/10/2005"); MessageBox.Show(tiempo.Diferencia.ToString()); } Para calcular la edad, basta con asignar a la segunda fecha del objeto tipo Intervalo, la fecha actual del sistema que se encuentra en la propiedad esttica Now de la estructura DateTime. El siguiente mtodo muestra un ejemplo que permite calcular la edad con base en la fecha de nacimiento leda desde una caja de texto: void Button2Click(object sender, EventArgs e) { int anos = 0; Intervalo edad = new Intervalo(); edad.Fecha1 = DateTime.Now; edad.Fecha2 = Convert.ToDateTime(TextFecha.Text); // Edad en aos anos = (int)(edad.Diferencia.Days / 365.25); MessageBox.Show(anos.ToString()); }
private int[] GenerarPrimos(int numero) { int[] primos = null; int i = 2; int j = 0; do { if (numero % i == 0) { numero = numero / i; Array.Resize(ref primos, j + 1); primos[j] = i; j++; } else
i++; } while(i <= numero); return primos; } Como no se conoce cuantos factores puede contener un nmero se define un vector sin dimensionar. El tamao se este se establece en ejecucin, cada que aparece un nuevo factor primo, mediante Array.Resize. El siguiente mtodo se encarga de identificar aquellos factores que sean iguales en el numerador y el denominador y los reemplaza por un 1. public void Simplificar() { int[] primosNumerador, primosDenominador; int i = 0, j = 0; // Encontrar los factores primos del numerador // y del denominador y guardarlos en un vector primosNumerador = GenerarPrimos(numerador); primosDenominador = GenerarPrimos(denominador); // Eliminar de cada vector los factores primos repetidos // reemplazandolos por 1 while (i < primosNumerador.Length) { while (j < primosDenominador.Length) { if (primosNumerador[i] == primosDenominador[j]) { primosNumerador[i] = 1; primosDenominador[j] = 1; break; } j++; } i++; j = 0; } // Encontrar el producto de las componentes de cada vector // (aqu tiene importancia haber reemplazado con 1) int a = ProductoComponentes(primosNumerador); int b = ProductoComponentes(primosDenominador); // Los productos encontrados son la simplificacin del // fraccionario numerador = a; denominador = b; } La razn de reemplazar los factores comunes por un 1, es que el siguiente paso ser multiplicar los factores no eliminados. De esta forma se obtiene la simplificacin del nmero. El mtodo que vienen a continuacin es quin se encarga de multiplicar las componentes del vector resultante.
private int ProductoComponentes(int[] vector) { int p = 1, i = 0; while (i < vector.Length) { p = p * vector[i]; i++; } return p; }
using System; public class Punteros { unsafe static void Main() { int numero = 10; int *direccionNumero; // define un puntero direccionNumero = № // la direccin de numero al puntero *direccionNumero = 95; // asignar 95 en la direccin de numero Console.WriteLine("numero = {0}", numero); } } La variable numero almacena, inicialmente, el valor 10. A la variable puntero direccionNumerose le asigna la direccin de numero. Al asignar un numero en la direccin a la que apunta el puntero lo que en realidad se est haciendo es cambiar el valor que tena numero. Para compilar programas que manejan punteros se debe llamar al compilador con el parmetro unsafe. As: > csc /unsafe punteros.cs
El siguiente mtodo recibe como argumento un TextBox y devuelve una matriz string[] con los prrafos que conforman su contenido, excluyendo a los prrafos vacos.
public static string[] Parrafos(System.Windows.Forms.TextBox cajaTexto) { string[] parrafos = new string[0]; int lineas = cajaTexto.Lines.GetLength(0); int k = 0; for (int i = 0; i < lineas; i++) { if (cajaTexto.Lines[i].Trim().Length > 0) { Array.Resize(ref parrafos, k + 1); parrafos[k] = cajaTexto.Lines[i]; k++; } } return parrafos; }