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

#1121
a ver... si tu sabes que, de promedio, cada mes tiene 30.42 días.

Si tu pones 5 de Julio de 1900... qué día del año es??

Lo primero es calcular el número de días hasta Julio, es decir, 30.42 * ( 7 - 1 ) = 182.52.

Como estás trabajando con enteros, el resultado se trunca a 182.

Si tu sumas: 31 + 28 + 31 + 30 + 31 + 30 = 181 ( uno menos ).

Luego en las siguientes líneas hace los ajustes necesarios para terminar de cuadrar el dato.

Una vez que tienes el número de días que hay entre el 1 de enero de 1900 y la fecha que has introducido, divides entre 7 y te quedas con el resto... ese resto te da el día de la semana.


#1122
Cita de: Oblivi0n en 18 Julio 2013, 16:04 PM
Si hacemos int* ptr1,ptr2,ptr3;  entonces ptr1,ptr2 y ptr3 son punteros a un entero.
Si hacemos int *ptr1,ptr2,ptr3;  entonces solo ptr1 es un punterom. El resto son variables enteras.

Ese es un ejemplo claro de cosas que no hay que hacer a la hora de programar :)

Que luego baila algún espacio y podemos sudar tinta hasta dar con el fallo.
#1123
son idénticas.

En c y c++ los espacios no son tenidos en cuenta ( salvo en las cadenas de caracteres )
#1124
Código (cpp) [Seleccionar]
ndias= (long) (30.42 * (mm - 1) + dd); //dia aproximado del año

Enero: 31 días
Febrero: 28 días
Marzo: 31 días
Abril: 30 días
...

Total días por año: 365 días ( 12 meses )
Media de días por mes: 365 / 12 = 30.41666

Para calcular el número de días calcula la media de días por mes y lo multiplica por el número de mes que hayas puesto.

Luego hace un ajuste rápido para los meses de menos de 31 días y ajusta también posibles años bisiestos y listo.
#1125
Cuando tú ejecutas un programa el sistema operativo reserva memoria y se la asigna al programa para que pueda trabajar.

La memoria, como norma general, está paginada y/o segmentada. Básicamente esto quiere decir que está dividida en fragmentos.

El sistema operativo dispone de un algoritmo que elige, entre los disponibles, qué segmento de memoria va a asignar al programa... dicho algoritmo suponemos que es LTI ( lineal e invariante en el tiempo ), es decir, que a una misma entrada, en unas mismas condiciones, generará siempre la misma salida.

Por tanto, si tu ejecutas varias veces seguidas tu programa sucederá lo siguiente:

Ejecutas el programa ( 1ª vez )
El sistema operativo reserva un fragmento de memoria y se lo asigna.
El programa te muestra los desplazamientos.
El programa finaliza y el fragmento de memoria es liberado.
Ejecutas el programa ( 2ª vez )
El sistema operativo, te asigna el mismo fragmento de memoria.
El programa te muestra los desplazamientos.
El programa finaliza y el fragmento de memoria es liberado.
...

Si quieres tener resultados diferentes prueba a poner una pausa en el programa, lo ejecutas una vez y, sin cerrarlo, lo vuelves a ejecutar. Verás como entonces sí te cambian las posiciones de memoria.
#1126
La inteligencia artificial que tu planteas de momento no creo que sea realizable por una sola persona.

No es algo accesible de primera mano y tiene una gran carga matemática por detrás.

Normalmente las aplicaciones que hacen uso de IA disponen de una "inteligencia" limitada casi en exclusiva a un campo de aplicación: jugar al ajedrez, imitar a un insecto, reconocer matrículas, ... pero lo que tu propones es algo así como aglutinar todo eso para crear una aplicación que sea capaz de aprender leyendo libros... no cuesta ya conseguir un traductor medio decente y tu pretendes que tu proyecto sea capaz de aprender a base de leer.

Yo creo sinceramente que de momento el proyecto es irrealizable, al menos como lo planteas.

#1127
ASM / Re: Comandos puertos I/O
18 Julio 2013, 13:34 PM
Eso es algo que te tiene que proporcionar el fabricante... el que fabrica la tarjeta es el que conoce todos los entresijos de dicha tarjeta.

Otra opción es usar ( si la tarjeta dispone de esta posibilidad ) del protocolo estándar para el caso, por ejemplo el de comunicación por usb o el de las tarjetas gráficas... no podrás obtener toda la potencia del hardware usando este mecanismo pero desde luego la programación será más sencilla y estará mejor documentada.
#1128
En serio, practica primero haciendo tareas más sencillas con los sockets y luego verás como hacer lo que quieres aquí no va a ser tan complicado.

Eso si, más que cogerse un exploit e intentar desgranarlo suele ser más productivo buscar y empollarse el protocolo de comunicación que utiliza el juego.

Más que nada porque dichos protocolos, a nada que sean mínimamente completos, suelen tener características que pasan desapercibidas pero que pueden provocar fallos inesperados en tu código si no las tienes en cuenta.
#1129
Cita de: rir3760 en 18 Julio 2013, 02:11 AM
Si quieres que todos los elementos de un array se inicializen a cero:
Código (cpp) [Seleccionar]
int _temp[128]; // temporal para ordenar
for (int i = 0; i < 128; i++) {
   _temp[i] = 0; // añado inicializador
}

Puedes hacerlo de una forma mas breve, indicando el valor del primer elemento:
Código (cpp) [Seleccionar]
int _temp[128] = {0}; // _temp[0] es cero, los elementos restantes se inicializan a cero

Además de las dos mencionadas, creo que la forma más común de inicializar la memoria es utilizar la función memset.

memset( _temp, 0, sizeof( _temp ) );

#1130
Por qué no empiezas por cosas más asequibles como diseñarte un pequeño entorno cliente-servidor en el que puedas intercambiar mensajes y archivos??

Lo que tu pides aquí es bastante denso y, aparte de eso, no tienes las ideas claras.

Con el "sistema UPD de winsock" imagino que te refieres a establecer una conexión UDP ( que no UPD ) con el servidor de half life... UDP es un protocolo de conexión estándar, no una exclusividad de winsock, que funciona sobre IP ( otro protocolo ).

No tiene sentido que te pongas a hacer programas así si no tienes ni idea de lo que estás haciendo... así no vas a aprender y te va a resultar demasiado frustrante.