Entradas

Mostrando entradas de febrero, 2010

Calculando las permutaciones

Ayer, haciendo un programa para que me haga los pesados determinantes que me mandan en la uni, me enfrente con el problema de que tenia que calcular todas las permutaciones de conjuntos de diferentes tamaños, y después de intentar hacer un programa que calculase todas, decidí buscar un poco, y la verdad es que la mayoría de los algoritmos que me encontré no me valieron de mucho, solo encontré un poco útil este , que no se si sera rápido pero la verdad es que tiene varios inconvenientes como que te da del revés las permutaciones, etc. Y por fin encontre, algo que merece la pena, facil y que me venia como anillo al dedo, se trata de un ejemplo de la web " conclase ", pagina muy muy recomendada para aprender c++ y unas cuantas cosas mas. Funcion + ejemplo #include <iostream> using namespace std; /* Prototipo de función */ void Permutaciones(char *, int l=0); int main(int argc, char *argv[]) { char M[] = "ABCD"; Permutaciones(M); system("pau

Programación para procesadores multinucleo

Hoy en día la mayoría de las CPUs tienen varios núcleos, desde 2 hasta 8 o 16, y cada vez mas y mas. Para que tus aplicaciones aprovechen esta característica de llevar varios procesos en paralelo usaremos "Windows Threads" o lo que seria la manera propuesta por Microsoft de usar varios hilos en sus Windows. Os dejo un pdf de casi 50 hojas tipo presentación donde se explica muy bien como hacerlo [ Windows Threads.pdf ] y creo que no hace falta que ponga ejemplos, ya que vienen bastantes en el pdf. Ademas, también explica varias alternativas para solucionar los errores mas típicos en un programa de varios "threads", que suelen ser por ejemplo el intento de leer y escribir en la memoria a la vez, o lo que seria manejar la misma variable en varios procesos diferentes. Disfrutazlo.

Es potencia de 2?

El otro día me encontré una función muy curiosa. Se trata de una función que te dice si un numero es potencia de 2 sin tener que hacer la pesada tarea de una raíz cuadrada, que es lo que haríamos todos seguramente, ver si al hacerle la raíz cuadrada nos deja decimales o no. bool ispow2 ( int x ) { return !((~(~ 0U >> 1 )| x )& x - 1 ) ; }

Tamaño de un vector en c sin usar variables extra

Imagen
Esta tarde, me acorde de que alguien me dijo que en pascal la primera componente de los vectores era su tamaño, no se si es cierto, pero en c, esto no ocurre y es necesario tener otra variable aparte para "recordar" cual es el tamaño de cierto vector. Pensando un poco se me ocurrió la grandisima idea, por lo menos para mi ;) , de poder deshacernos de la variable extra sin olvidarnos del tamaño de un vector, es decir, donde antes teniamos las variables *vector y tam, ahora solo nos haría falta *vector. No se si se le ocurrio a alguien antes, busque un poco que parece que nadie usa este metodo, asi que o lo acabo de inventar o no se usa por que realmente es muy malo, yo creo que es genial (siempre que se trabaje con numeros enteros), es 100% compatible con el método "clásico" y tiene muchísimas ventajas. Como funciona Muy fácil, lo que se hace con este método es guardar el tamaño del vector en el propio vector. Se reserva memoria también para el tamaño y se hace a

Programa que resuelve sistemas de ecuaciones

Hace unos meses tuve que hacer para la uni un programa que resolviera sistemas de ecuaciones usando el metodo de Gauss-Jordan. Esto fue lo que hice, esta bastante explicado, si se te ocurre alguna mejora coméntanosla. El programa esta incompleto y aun tiene muchos fallos, pero es un buen comienzo para uno aun mejor, funciona bien para matrices "normales" pero en cuanto lo pones a resolver matrices con muchos ceros al principio falla. lo intentare solucionar.

Drop Renamer

Imagen
Descripción general Drop Renamer es un renombrador de archivos especialmente diseñado para renombrar las fotos de manera que su nombre final sea la fecha de creación y así mantener el orden en los albunes de fotos. Drop Renamer extrae la información exif de las fotos, y fechas de creación y modificación, y teniendo menos prioridad esta ultima, selecciona la fecha (día y hora) en la que fue tomada la foto. Drop Renamer vale para cualquier archivo. Captura de pantalla Download Descargar Modo de uso Arrastrar las fotos o archivos hacia el botón con el texto "Renombrar" Otras aspectos No hace falta instalar nada, doble click y listo, pero para que se pueda abrir necesita el .net Framework 3.5. La mayoría de las veces que da error es por que existen 2 fotos con exactamente la misma fecha, y falla al ver que no puede ponerle el mismo nombre a las 2, por lo que para poder renombrar esas fotos hay que moverlas a otro directorio diferente y volver a intentarlo, s

Crear matrices dinámicas con c y c++

Imagen
Bien, ahí va el código en c++ de como crear una matriz dinamicamente. #include using namespace std ; int main () { int i , j , f , c ; cout << "Introduce el numero de filas" << endl ; cin >> f ; cout << "Introduce el numero de columnas" << endl ; cin >> c ; // creamos la matriz ! double ** M = new double * [ f ]; for ( i = 0 ; i < f ; i ++) M [ i ] = new double [ c ]; // Comprobamos if (! M ) { cout << "No se puede reservar el espacio" << endl ; return 1 ; } cout << "Introduzca la matriz" << endl ; for ( i = 0 ; i < f ; i ++) for ( j = 0 ; j < c ; j ++) cin >> M [ i ][ j ]; cout << "Mostrar la matriz" << endl ; for ( i = 0 ; i < f ; i ++) { for ( j =

jProgBar

Overview jProgBar is a jQuery progress bar plugin. Demo http://jprogbar.googlecode.com/hg/jProgBar.html Download http://jprogbar.googlecode.com/hg/ Usage $('#youid').progbar(value) To Do Documentation, possibility to change status text. Licensing LGPL

Crea tu propio juego 2D

Imagen
Construct  es un programa gratuito y open source con el que puedes crear juegos en 2D fácilmente, y la verdad es que me sorprendió bastante la facilidad y rapidez con la que puedes crear un jueguecito de tipo plataforma, y todo esto sin saber programar en absoluto, ya que todo se hace a través de la interfaz gráfica. Y para los que sabemos algo mas, el programa te da la posibilidad de programar en python. Soporta sonidos en formatos como mp3, ogg y seguramente algunos mas, y  para la musica, tambien puede utilizar modulos mod, xm, it, etc... Esto y muchas cosas mas son las que puede hacer, pero como yo no e echado tanto tiempo como para conocerlas os dejo un video. Este el el típico programa que me hubiera venido de p*** m**** cuando estaba en la "eso" y quería hacer un juego en el que aparecieran las caras de los profesores y el jugador 1 tendría que tirarles tomates o huevos.

Resumen mensual

Como  veo que en algunos post ya publicados hago modificaciones, que la verdad es que creo que es poco recomendable ya que casi nadie se va a dar cuenta del cambio, para que estéis al tanto de los cambios haré un post cada mes resumiendo todos los cambios y novedades. Actualizado: 04/05/2010 Parece ser que esto de cambiar era mas común al principio cuando fácilmente encontraba faltas, errores o mejoras en los post. Ahora ya, como mucho lo modifico 5 minutos después de si publicación, por lo que seguramente deje de hacerlos. De todas maneras si modifico algún post con alguna mejora seguramente se anuncie.

Sobre fractales

Imagen
Si no sabes lo que representa la imagen de arriba seguramente no sabes lo que es un fractal. La imagen de arriba es del fractal de Mandelbrot y si quieres saber mas ... mejor léelo de la wikipedia. Ayer navegando por la web me encontre en la página  dmitrybrant.com el codigo fuente en c# de un programa que dibuja el fractal de Mandelbrot, el programa cumple con su funcion, pero como esta hecho en c# no es tan rápido como se desea para este tipo de programas de calculo intensivo, por lo que me puse manos a la obra y lo reescribí en c++, con .net, vamos con el visual c++. En cuanto pueda publicare el codigo y el binario para que la veais. en cuanto al codigo fuente, para los entendido, quizas este horrible, y no lo se por que es la primera vez que programo c++ con .net. La versión que se ofrece aquí para descargar no es la ultima. Ver / Descargar

Anunciate en Davidxl

Aprovecha ahora que hay huecos libres para comprar un bloque de aproximadamente 100x100 pixels donde podrás poner el anuncio de tu web, o lo que quieras,siempre que sea dentro de el bloque correspondiente, lo normal e que sea una imagen jpq o gif. Para comprar un bloque o informarse sobre precios u otras cosas mandadme un email los interesados a la dirección davidgg666@gmail.com con buestras preguntas o el precio que estaríais dispuestos a pagar por vuestra publicidad en mi web/blog.

Novedades

Dos días después de crearme el blog, Google Analytics me muestra 6 visitas en total, y creo que todas son mías. Estos días a habido mucho movimiento por aquí, e estado personalizando el tema, que todavía me queda bastante, e estado creando los repositorios para mis plugins de jquery, y ahora estoy con la documentación de estos. Esperare tener un blog mas estable antes de marzo, y con esto me refiero a no mas cambios en el tema, pruebas, etc...

jStars

Overview jStars is a jQuery star rating plugin Demo http://jstars-xl.googlecode.com/hg/jStars.html Download http://jstars-xl.googlecode.com/hg/ Usage $('#youid').stars({ rated:false, // already rated stars: 5, // n of stars step:1, // step val:0, // initial value starwidth:28, starimg:"jStars.png", onchange: function(v){}, onrating: function(v){} }) To Do Documentation, rerating option Licensing LGPL

jSlider

El proyecto se encuentra desactualizado Overview jSlider is a jQuery slider plugin. Demo http://jslid.googlecode.com/hg/jSlider.html Download http://jslid.googlecode.com/hg/jSlider.js Usage $('#yousliderid').slider({ min:0, //minimum value max:100, //maximum value val:50, //initial value onchange:function(v) { } }) To Do Step option, more demos ... Licensing LGPL

Compatibilidades y demás

Imagen
  Este es el aspecto del blog visto desde el Internet Explorer 6, navegador que esta totalmente obsoleto y que no hace mas que dar problemas, por lo que no le voy a dar soporte. Ya sabéis, hay que actualizarse o cambiar a mejores alternativas como "Chrome", "Firefox", ... También deciros que todos los códigos que publique aquí seguramente funcionen con el "Chrome", que es el navegador que uso normalmente, y creo que también funcione todo bien con "Safari" y "Firefox" la mayoría de las veces, de todas maneras estaré agradecido de los comentarios que me pongáis sobre el buen o mal funcionamiento en otro navegador junto con una posible solución. Quizás a veces me explico mal y no me entendéis, seguramente sea por que nunca escribí ningún blog ni nada parecido, espero mejorar ese aspecto con el tiempo y acordaros de preguntarme.

El primer post

Bienvenidos todos a mi blog, mi primer blog. El principal motivo de su creación es exponer mis proyectos, tambien iré publicando algunos articulos interesantes de temas reclacionados con la programación y electrónica principalmente. Intentare actualizarlo a diario con nuevos contenidos