Archivo de la categoría "Programación"

C# LinkedList Ordenada

Viernes, 20 de Noviembre de 2009

Las LinkedList ubicadas en la libreria System.Collections.Generic son listas doblemente enlasadas, no incorporan la opcion para tener los elementos ordenados. Necesitaba una LinkedList ordenada de elementos de tipo int asi que cree ua nueva clase heredando todas las caracteristicas de LinkedList, solo añadi la funcion ShortAdd(int v). para añadir elementos enteros de manera ordenada. La nueva Clase que creee para solucionar este inconveniente es la ShortedLinkedList

Aqui les dejo el codigo fuente


class SortedLinkedList<T> : LinkedList<T>
{
public void ShortAdd(T v)
{
LinkedListNode<T> nuevo = new LinkedListNode<T>(v);
LinkedListNode<T> aux =  this.First;
if (aux == null) this.AddFirst(nuevo);
while (aux != null)
{
int n =   Convert.ToInt32(nuevo.Value);
int a = Convert.ToInt32(aux.Value);
if (n < a)
{
this.AddBefore(aux, nuevo);
break;
}
aux = aux.Next;
if (aux == null) this.AddLast(nuevo);
}
}
}

Asi solo utilicemos las funcion ShortAdd() para añadir elementos, y recuerden solo funciona cuando declaramos la SortLinkedList de tipo int.

Ejemplo

SortedLinkedList<int> lstdbleord = new SortedLinkedList<int>();

Aunque seria interesante crear una que acepte caracteres o mejor aun cadenas asi ordenariamos listas de nombres con facilidad.

Visual Studio 2010 Beta 2

Miércoles, 18 de Noviembre de 2009

Como saben me gusta la programacion, asi que decidi bajar la beta del visual studio 2010 creo que estarar implementando Framework 4. Lo curioso es que en su pagina de descarga en español me tope con un error curioso

Impulse su próximo proyecto con Visual Studio 2010 Beta 2. La licencia «Go Live» que acompaña a esta versión permite desarrollar y desplegar las aplicaciones antes de que Visual Studio 20010 llegue a las tiendas.

Como vemos siempre microsoft deleitandonos con errores como este, y como les digo yo tengo orreres de otrografia pero tener errores en paginas tan importantes como esta. Bueno me queda esperar a que se baje y probarlo

Buscaminas en C#

Sábado, 24 de Octubre de 2009

Esto mas bien fue un proyecto de la escuela de mi clase estructura de datos, se trataba de hacer un buscaminas en el lenguaje que desemos para asi aprender o demostrar que aprendiste usar matrizes.

Pues yo hice uno mas o menos completo y visual.
Aqui un captura
Buscaminas

Tiene la opcion de elegir la cantidad de minas aunque no tiene la opcion de tamaño de campo, creo que hare una siguiente version por osio que lo tenga, ya mi primo felipe me dio una idea de como hacer lo del campo dinamico. Incorpora contador de tiempo y contador de minas restantes y un sencillo menu. Espero les ayude a aquellos novatos en la programacion, y espero no lo plagien nomas pa salir de una tarea, sino que les ayude a entender un poco como podria ser una forma de resolver estos modelos.
Descarga el codigo fuente (Buscaminas)

Colas en c#

Miércoles, 21 de Octubre de 2009

Aunque ya existen cola en la biblioteca de net y podemos usarlas agregando la biblioteca System.Collection.Generic el nombre para usar las colas es Queue (cola en ingles), al igual en mi clase de estructura de datos me tome la libertad de crear una cola. Para las queno saben una cola es una estructura de datos donde podemos guardar datos de tipo primero en entrar primero en salir, osea encolamos los datos, esto es ideal para simular un dia en un establecimiento donde se tenga que esperar en un cola, por ejemplo en las tortillas, y para otras cosas en programas donde sean utiles, tal vez por ejemplo en el famos texas holdem poker, podemos poner en cola a los jugadores que van a jugar para repartir las cartas y hacer las apuestas, en fin las colas tienen muchos usos aqui les dejo la cola que cree.

class Cola<T>
{

//sirve para cambiar el tamaño de la cola, realmente si establecemos a 11 solo tenemos 10 espacios, uno menos del que definamos puesto que es una estructura de cola circular
const int max = 11;

T[] datos = new T[max];

public int frente;

public int final;

public Cola()

{

frente = max - 1;

final = max - 1;

}

//la funcion enqueue del igles poner en cola, sirve para eso le pasamos por argumente el dato a agregar y listo
public void Enqueue(T dato)

{

final++;

if (final == max) final = 0;

datos[final] = dato;

}

//funcion dequeue del ingles sacar de la cola nos sirve para timar el ultimo dato y eliminarlo de la cola, aunque internamente no se borra solo se saca del rango hasta que otro valor lo sobrescribe.
public T Dequeue()

{

frente++;

if (frente == max) frente = 0;

return datos[frente];

}

//las siguientes dos el nombre lo dice regresa true o false dependiendo si son verdaderos o no
public bool colavacia()

{

if(frente==final)return true;

return false;

}

public bool colallena()

{

if (final == frente - 1) return true;

return false;

}

//esta funcion realmente no deberia de ir en un cola puesto a que no se debe de poder acceder a los elementos internos, solo al que vaya a salir, pero igual esta para verificar su funcionamiento en una consola
public void imprimir()

{

int i = frente+1;

while (i != final + 1)

{

if (i == max) i = 0;

Console.WriteLine(datos[i]);

i++;

}

}

donde definamos la cola seria asi.

Cola<int> coladeenteros = new Cola<int>();
Cola<string> coladecadenas = new Cola<string>();

pongo dos ejemplo para destacar que dentro de los <> podemos definir el tipo de datos que se van a encolar.

espero les sirva como base de ayuda, para aquellos que le andan novateando a C#

C#: TexBox solo numeros

Sábado, 12 de Septiembre de 2009

Solo les dejo un codigo para aquellos programadores que visitan mi web, se trata de aceptar solo numeros en un texbox de un formulario en c#

private void TexBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (Char.IsDigit(e.KeyChar))
{
e.Handled = false;
} else if (Char.IsControl(e.KeyChar))
{
e.Handled = false;
}
else if (Char.IsSeparator(e.KeyChar))
{
e.Handled = false;
}
else
{
e.Handled = true;
}
}

Solo evalua al precionar la tecla si es numero o no y mediate e.Handled lo anula o lo escribe. Saludos a todos