Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - do-while

#781
Foro Libre / Re: Juego: Estas baneado por....
4 Febrero 2012, 18:13 PM
Mr. X, baneado porque "tu perro se ha comido a mi madre" y por tener un nick impicitamente sexual que puede herir la sensibilidad de los menores...  ;-)
#782
¡Buenas!

A mi eso me empezo a pasar por descuidar la limpieza fisica de los ordenadores (tanto en el sobremesa como en el portatil), mira si se te recalienta. Puede ser acumulacion de polvo en el interior. Esto hace que suba la temperatura y que funcione como has descrito aun habiendolo formateado (ya que el problema no es de software, sino de la limpieza del hardware).

¡Saludos!
#783
¡Buenas!

Esto me suena al cifras y letras que hubo en tiempos en el foro libre en tiempos.

El programa no es dificil utilizando al goritmos recursivos (si, hice trampas... XD)

Aqui te dejo el codigo que hice, si no entiendes algo avisa. En este caso he utilizado un vector estatico con MAX_CIFRAS elementos. txtresultado tambien tiene fijado el numero de caracteres (el codigo lo hice un poco al vuelo). Si quieres que tu programa funciones bien tendras que corregir esos detalles utilizando memoria dinamica, ya que pueden se fuente de errores.

Tendras que darle una dimension "grande" a txtresultado si quieres asegurarte de que no te pasas del final del bloque...


/*
* si se puede resolver devuelve 1, sino 0
*
* guarda en txtresultado las operaciones que se van realizando para llegar al resultado
*/
int resolver(int *cifras,int ncifras,int resultado,char *txtresultado)
{
   int i,j,operador1,operador2;

   /* si el numero de datos restantes es <= 1, no se pueden realizar operaciones */
   if(ncifras <= 1)
       return 0; /* devolvemos falso */

   /* emparejamos los numeros de 2 en 2 */
   for(i=0 ; i < ncifras ; i++)
   {
       for(j=0 ; j < ncifras ; j++)
       {
           operador1 = cifras[i];
           operador2 = cifras[j];

           if(i!=j) /* un numero no puede operar consigo mismo */
           {
               if(i < j) /*suma y producto son conmutativas y se realizan solo con i<j */
               {
                   /*
                    * operamos y guardamos la operacion en la cadena que contiene el texto con
                    * el resultado
                    */
                   operacion(cifras,i,j,'+',txtresultado);

                   /* si tras la operacion hemos hallada el resultado */
                   if(cifras[i] == resultado)
                       return 1; /* devolvemos verdadero */

                   /* en este punto, no se ha hallado ninguna solucion
                    * por lo tanto, buscamos un resultado, con los datos restantes
                    */
                   if(resolver(cifras,ncifras-1,resultado,txtresultado + strlen(txtresultado)))
                       return 1; /* si lo solucionamos, devolvemos verdadero */

                   /* si no lo solucionamos, resauramos los valores de los parametros */
                   restaurar(cifras,i,j,operador1,operador2,txtresultado);

                   /* y pasamos a la siguiente operacion */
                   operacion(cifras,i,j,'*',txtresultado);

                   if(cifras[i] == resultado)
                       return 1;

                   if(resolver(cifras,ncifras-1,resultado,txtresultado + strlen(txtresultado)))
                       return 1;

                   restaurar(cifras,i,j,operador1,operador2,txtresultado);
               }

               //resta y division no conmutativas, asi que las realizamos con todos los pares

               operacion(cifras,i,j,'-',txtresultado);

               if(i < j)
               {
                   if(cifras[i] == resultado)
                       return 1;
               }
               else
                   if(cifras[j] == resultado)
                       return 1;

               if(resolver(cifras,ncifras-1,resultado,txtresultado + strlen(txtresultado)))
                   return 1;


               restaurar(cifras,i,j,operador1,operador2,txtresultado);

               operacion(cifras,i,j,'/',txtresultado);

               if(i < j)
               {
                   if(cifras[i] == resultado)
                       return 1;
               }
               else
                   if(cifras[j] == resultado)
                       return 1;

               if(resolver(cifras,ncifras-1,resultado,txtresultado + strlen(txtresultado)))
                   return 1;

               restaurar(cifras,i,j,operador1,operador2,txtresultado);
           }
       }
   }

   return 0;
}

void restaurar(int *cifras,int i,int j,int operador1,int operador2, char *txtresultado)
{
   /* movemos los datos a partir del indice mayor una posicion a la derecha */
   if(i < j)
       memmove(cifras + j + 1, cifras + j, sizeof(int) * (MAX_NUMEROS - j - 1));
   else
       memmove(cifras + i + 1, cifras + i, sizeof(int) * (MAX_NUMEROS - i - 1));

   /* restauramos los valores originales que habia en el vector */
   cifras[i] = operador1;
   cifras[j] = operador2;

   /* y eliminamos la informacion de la operacion de la cadena con la solucion */
   *txtresultado = '\0';

   return;
}

void operacion(int *cifras,int i,int j,char op,char *txtresultado)
{
   /* guardamos en min{i,j} el bresultado de la operacion */

   switch(op)
   {
       case '+':
           sprintf(txtresultado,"%d + %d = %d\n",cifras[i],cifras[j],cifras[i]+cifras[j]);
           cifras[i] += cifras[j];
           break;

       case '*':
           sprintf(txtresultado,"%d * %d = %d\n",cifras[i],cifras[j],cifras[i]*cifras[j]);
           cifras[i] *= cifras[j];
           break;

       case '-':
           sprintf(txtresultado,"%d - %d = %d\n",cifras[i],cifras[j],cifras[i]-cifras[j]);

           if(i < j)
               cifras[i] -= cifras[j];
           else
               cifras[j] -= cifras[i];

           break;

       case '/':
           if(cifras[j])
               if(!(cifras[i] % cifras[j]))
               {
                   sprintf(txtresultado,"%d / %d = %d\n",cifras[i],cifras[j],cifras[i]/cifras[j]);

                   if(i < j)
                       cifras[i] /= cifras[j];
                   else
                       cifras[j] /= cifras[i];
               }
           break;
   }

   /* y ahora desplazamos todos los valores a la derecha de max{i,j} una posicion a la izquierda */

   if(i < j)
       memmove(cifras + j,cifras + j + 1, sizeof(int) * (MAX_NUMEROS - j - 1));
   else
       memmove(cifras + i,cifras + i + 1, sizeof(int) * (MAX_NUMEROS - i - 1));

   return;
}


Si encontrais errores o cambiais algo el codigo me gustaria poder echarle un ojo.

¡Saludos!
#784
Bah. Llamarles subnormales (a los estadounidenses) seria ofender a los subnormales, asi que mejor me callo. (Bueno, ya lo he dicho XD)
#785
¡Buenas!

Si buscas un poco tienes montones de paginas que te indican la estructura de un BMP, el resto solo es pensar como implementarlo.

¡Saludos!

PD: En otro post ya te han dado parte de la informacion que necesitas.
#786
Citar
El cierre de Megaupload y la detención de su excéntrico fundador ha sido un duro golpe para la piratería en Internet, pero difícilmente se va a poner freno a las descargas ilegales de música y cine si no se encuentra alguna fórmula que salvaguarde los derechos de autor y que, al mismo tiempo, sea atractiva para los internautas y les motive a apostar por la copia legal y no por la pirata.

El canon se impuso por el derecho a copia privada. Es decir, se paga el canon y se tiene derecho a disfrutar de copias de las obras y el canon que se ha pagado por el soporte se utiliza para ¿compensar al autor? (No, se lo gastan en putas de lujo)

Citar
Se trata de establecer una tarifa plana para el intercambio legal de productos culturales y audiovisuales en Internet. Por 6 euros al mes, los internautas tendrían derecho al intercambio legal de obras protegidas por derechos de autor.

Lo que viene siendo añadir 6 auros mas a la modificacion del canon que quiera imponer el PP.

Citar
El dinero sería recaudado por el proveedor de servicios y remitido a una entidad de gestión, que sería la encargada de distribuir los fondos entre los autores. Este sistema –promovido por Reino Unido– exigiría aplicar algunas limitaciones a la capacidad de los sistemas de almacenamiento y a la cantidad de archivos compartidos.

Tarifas (todavia) mas caras.

Citar
El objetivo es poner fin a una situación que cada vez es más escandalosa y que amenaza con acabar con uno de los bienes más preciados y escasos: el talento. España es el país con más piratería de Europa y uno de los diez mayores del mundo. Tan sólo 2 de cada 100 canciones que se escuchan son legales, el cine y los videojuegos sufren una tasa de piratería superior al 70%, y ya casi la mitad de los libros consumidos son piratas.

Existen las licencias Creative Commons y un monton de gente con talento a la que se ignora para imponer modas que ofrecen suculentos beneficios a la industria, no a la cultura. Y como he dicho antes, devido al canon, es completamente legal el hecho de tener copias.

Citar
En lugar de intercambio de archivos, yo me voy a inventar el intercambio de activos. Voy a ir a un concesionario de Porsche y voy a robar un Porsche Carrera, que como me parece caro tengo derecho a robarlo, y luego se lo dejaré a todos mis amigos, pero, eso sí, sin cobrarles nada. Para justificar el robo, puedo argumentar que Porsche gana mucho dinero, que necesito el coche para ir a trabajar, que mi única intención es socializar el lujo, que un coche da mucha libertad...

Falacias, un Porsche no se puede copiar.

Citar
Hay unos señores que crean obras por las que casi no cobran, y otros señores, como el extravagante Kim Schmitz, que ganan dinero dedicándose a robar sus obras a través de la copia y el pirateo.

Ya he dicho en varias ocasiones que soy musico y que toco en varios grupos. El (poco) dinero que pueda ganar de la musica, me lo gano subido a un escenario y trabahando, no viviendo del cuento de vender copias de discos.

¡Saludos!

Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
#787
Noticias / Re: Cierre de MU
20 Enero 2012, 02:08 AM
Hay una pequeña mierdecilla marron en la Casa Blanca que esta apestando en todo el mundo...
#788
¡Buenas!

Uno de los grupos en los que toco tenemos musica licenciada bajo Creative Commons en GrooveShark.

¿No hay forma de montar el pollo por toda esa musica Creative Commons que estan censurando?

¡Saludos!
#790
Programación C/C++ / Re: programita en C
12 Enero 2012, 17:27 PM
¡Buenas!

Yo te ayudo.

El primero es uno, el segundo tambien es uno, y a partir de aqui, cada numero es la suma de los dos anteriores.

¡Saludos!