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 - eferion

#891
Programación C/C++ / Re: Numeros primos
2 Octubre 2013, 17:27 PM

int main( int argc, char** argv )
{
 // tu codigo aqui
}


Regla importante del foro: No se hacen tareas, se resuelven dudas y se ayuda allí donde te hayas quedado atascado.

Si quieres que alguien te haga las tareas del "cole", por un módico precio seguro que más de uno se apunta, yo entre ellos.

Si no, la opción es que te lo curres un poquito y nosotros te vamos ayudando allá donde te atasques.

#892
Supongamos que te llega ABC\nDEF

Tu strncpy dejaría la cadena tal que: ABC\r\n\EF

strncpy( Pos, "\r\n", 4 ) no desplaza lo que haya detrás... lo sobreescribe.

En cualquier caso, si tu quieres recuperar la imagen, y solo la imagen, tienes que eliminar toda la cabecera http que te envía el servidor y quedarte únicamente con el código de la imagen.

La respuesta del servidor no va a generar por si sola una imagen válida, ya que la cabecera http no está contemplada en ningún estándar de ficheros de imagen.
#893
Programación C/C++ / Re: no abre un archivo txt
2 Octubre 2013, 10:02 AM
deberías mirarte la declaración de getline. No devuelve un bool, sino una referencia de tipo ifstream.
#894
La clase vector trae su propia lógica para poder incrementar la memoria que internamente manipula, lo que sucede es que ese proceso es transparente para ti.

La clase vector dispone de métodos para reservar directamente una cantidad determinada de memoria interna. Esto viene bien cuando sabes que vas a llenar con muchos elementos un vector, ya que cada vez que tiene que incrementar su memoria interna tiene que hacer el proceso que tú has descrito. Como puedes imaginarte ese proceso puede deteriorar el rendimiento de la aplicación.

Lo que está claro es que, si necesitas más memoria en un vector, o lo haces como has descrito, o creas bloques de memoria independientes... la ventaja de este sistema es que no hay que hacer un volcado cada vez que se reserva un bloque nuevo... la desventaja es que el acceso a los elementos es más lento.
#895
Cita de: Karcrack en  1 Octubre 2013, 22:26 PM
Completamente de acuerdo pero a no ser que uses un compilador de los 90 tu intento de optimizar puede no ser tan óptimo como el que haría el compilador...

No me refería exactamente a eso.

Tu piensa que, en función de cómo configures el compilador, el mismo compilador, puede proporcionarte unas optimizaciones u otras. El mismo código fuente puede servir para generar varias decenas de códigos binarios distintos... dependiendo de las optimizaciones que se vayan a aplicar.

Además hay optimizaciones incompatibles entre sí, como pueden ser algunas relativas a velocidad de ejecución y las de tamaño del ejecutable.

A lo que yo iba es que, independientemente de eso, el código fuente es algo que tiene que mantener el programador, por lo que merece la pena invertir el tiempo y el dinero en tener un código limpio, manejable y escalable. A corto, medio y largo plazo merece la pena.

#896
Programación C/C++ / Re: problema con archivos
2 Octubre 2013, 08:32 AM

while((car = fgetc(fd))!= ',')
            {
                cadena[j] = car;
                j++;
            }
            j = 0;
            if((strcmp(cadena,nombre)) == 0)
               i++;


Como bien sabrás, las cadenas tienen que terminar en '\0'... ahí no estás poniendo dicho caracter, luego a saber qué es lo que estás comparando.

Un ejemplo:

nombres: pablo,antonio,pablo
nombre buscado: pablo

primer nombre:
* cadena = pabloS$FG´}S¿S-er
* encuentra el nombre: no
* motivo: cadena no está inicializada y tiene basura

Al encontrar una coma sería altamente recomendable introducir un nulo en la cadena para tener un nombre con sentido.

Además es posible que el último nombre no termine en coma, luego el algoritmo te puede fallar si el último nombre del archivo es el buscado.

Adicionalmente, el bucle para localizar las comas lo puedes eliminar si haces uso de la función strtok.

Un saludo.
#897
Programación C/C++ / Re: combinaciones???
2 Octubre 2013, 08:23 AM
Es posible.
#898
Te agradeceríamos que pusieses código escrito en c o en c++... si no es así deberías plantearte cambiar de subforo.
#899
Cita de: Karcrack en  1 Octubre 2013, 09:46 AM
Me gustan mucho este tipo de códigos :P Yo me hice un emulador para un set de instrucciones reducizo del MIPS cuando lo dí en la universidad ;D


Los compiladores modernos ya hacen esa optimización de forma automática. (http://en.wikipedia.org/wiki/Branch_table)

Las optimizaciones de los procesadores están bien... pero no puedes depender de ellas para hacer un código optimizado. Entre otras cosas las optimizaciones son condicionales, ya que no siempre pueden aplicarse, además cada compilador aplica sus propias optimizaciones, luego la optimización final varía de un compilador a otro.

Además, por muchas optimizaciones que haga el compilador, el mantenimiento del código fuente siempre te va a tocar a ti, por lo que te interesa que ese código, al margen de posibles optimizaciones del compilador ) sea lo más legible y sencillo posible... y si no intenta tu pegarte con un bug en una función de 2484 líneas de código, 20 parámetros y punteros y variables sin inicializar ( sí, yo me he encontrado con eso y con cosas peores ).
#900
Deberías plantearte empezar a subdividir el código de la cpu. Conforme vayas añadiendo instrucciones tu código va a empezar a ser un poco caótico.

Si te atreves a migrar el código a C++ avísame y te comento algunas ideas.

Si no, una opción para liquidar ese switch que va a acabar siendo infernal es que te crees un array de punteros a funciones... en la posición 0 pones un puntero a la función que va a ejecutar la instrucción 0x00, en la posición 1 la correspondiente a la instrucción 0x01... Cuando te llegue una instrucción ejecutas la función que corresponda dado el índice de la instrucción y listo. Además ganarás velocidad.

Ten en cuenta que con este diseño tendrás que pasar como parámetro un puntero a la estructura cpu, para poder acceder a los acumuladores, registros y demás.

Si hay huecos puedes definir un valor que determine que la instrucción en concreto no existe... para mostrar mensajes de error por ejemplo.

Este nuevo diseño te va a permitir mantener un código más limpio y ordenado, con funciones pequeñas y fáciles de depurar.

Por lo demás, tiene buena pinta.

Enhorabuena.