|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - m0skit0
Páginas: 1 ... 81 82 [83] 84 85 ... 100
2051
« en: Lunes 27 de Octubre de 2008, 09:42 »
Es algo como lo que puso Moskit0, lo que pasa es que no se cuando tengo que pasar punteros El día que te expliques alguien te ayudará. Suerte
2052
« en: Domingo 26 de Octubre de 2008, 20:53 »
les pido disculpa por los disturbios causados No hace falta que te disculpes, tú sólo has formulado una pregunta. No hay ningún problema
2053
« en: Domingo 26 de Octubre de 2008, 20:51 »
La verdad es que no tengo conocimiento de esa función, pero es algo que puedes hacer tú mismo. La "e" significa "10 elevado a", por tanto el ejemplo que pones es 233.280.000. Lo que no entiendo muy bien es para qué quieres pasarla a este último formato...
2054
« en: Domingo 26 de Octubre de 2008, 16:57 »
Estaré al tanto porque me resulta interesante lo que has publicado. Espero que sea pronto, un saludo!
2055
« en: Domingo 26 de Octubre de 2008, 16:55 »
# EXEC SQL INCLUDE SQLCA # # /*Declaración de la tabla TEMPLE de los ejemplos*/ # # EXEC SQL DECLARE TEMPLE TABLE # (NUMEM INTEGER NOT NULL, # NUMDE INTEGER NOT NULL, # EXTEL SMALLINT NOT NULL, # FECNA DATE NOT NULL, # FECIN DATE NOT NULL, # SALAR DECIMAL (5,0) NOT NULL, # COMIS DECIMAL (5,0), # NUMHI SMALLINT NOT NULL, # NOMEM VARCHAR(20) NOT NULL); el programa no me reconoce ninguna sentencia Pues claro que no, porque esto no es C, y lo que tú usas es un compilador de C, no SQL. Tienes que hacer que C sea capaz de comunicarse con una base de datos mediante SQL, no hacer de C SQL. Y revisa bien el código del libro, porque esto que has puesto dudo que esté en el libro así como lo pones...
2056
« en: Domingo 26 de Octubre de 2008, 16:52 »
¿A número normal? ¿Qué es normal?
2057
« en: Domingo 26 de Octubre de 2008, 12:01 »
utilizando la semántica de los punteros de C, uno puede simular un pasaje por referencia. Que es lo que hacen los otros lenguajes, pero implícitamente, porque son de más alto nivel que C.
2058
« en: Domingo 26 de Octubre de 2008, 11:59 »
instalarlo en otra particion que no sea c. Primero tienes que tener otra partición que no sea C. Con lo que o puedes optar por un programa que te reduce el espacio que ocupa la partición C (si es posible) y con el espacio sobrante crea otra, o bien formatear y crear las particiones de nuevo. Lo que hay que hacer siempre es crear varias particiones en el disco (siempre teniendo en cuenta qué posible uso futuro le podemos dar) justo cuando el disco está nuevo y ahorrarnos futuros quebraderos de cabeza. De todas formas, para Linux deberías tener mínimo 2 particiones: 1 con el sistema en sí y otra de intercambio (aconsejable el tamaño el doble de la RAM). en versiones recientes del kernel se utiliza sd* Yo tengo 2.6.18 y nada de usar sd*. Será porque tu disco es SATA.
2059
« en: Domingo 26 de Octubre de 2008, 11:49 »
¿Te refieres a esto? void tu_funcion(int argc, char * argv[]); [...] int main (int argc, char * argv[]) { tu_funcion(argc, argv); }
O sigues sin explicarte...
2060
« en: Domingo 26 de Octubre de 2008, 03:35 »
separando el codigo en modulos ¿Puedes aclarar a qué te refieres? ¿C o C++?
2061
« en: Viernes 24 de Octubre de 2008, 21:44 »
¿Es por que esas instrucciones no existen en el Assembly Inline de Turbo Pascal y tiene que usar los prefijos para que el procesador lo entienda? Efectivamente, supongo que porque no tendrá soporte para los registros extendidos de 32 bits del 386 y superiores. En las lineas 10 y 12: mov dx, ax mov ax, dx No comprendo que trabajo realizan, ¿Para que sirven? Primero tienes que entender lo que hace REP STOSD. REP, creo que ya lo comentamos en otro post, repite la instrucción tantas veces como indique CX y por cada iteración aumenta/decerementa DI y SI en tantas unidades como bytes procese la instrucción. STOSD copia EAX a ES:EDI (4 bytes por tanto). Aquí te dejo comentado el código: PROCEDURE Fill64k (Where:word;Col : Byte); assembler; asm ; Guardamos ES en la pila push es ; 16000 veces mov cx, 16000; ; Movemos el valor de la variable a ES mov es,[where] ; Ponemos DI a cero ; Error: esto supone que los 2 bytes más altos de EDI ; están a cero, por tanto puede producir errores si no es así xor di,di ; Movemos el valor con que queremos rellenar la zona de memoria a AL (1 byte) mov al,[col] ; Copiamos ese mismo byte a AH mov ah,al ; Ahora viene lo que te da el dolor de cabeza :) ; Copia AX en DX (como una variable temporal) mov dx, ax ; Mueve 16 posiciones a la izquierda EAX, es decir, rellena los 16 bits altos de EAX. AX queda a 0. db $66, $C1, $E0, $10 {shl eax, 16} ; Vuelve a poner DX en AX, con lo que nos queda el byte con el que rellenar la zona de memoria ; repetido en los 4 bytes de EAX. mov ax, dx ; Copia EAX 16000 veces en ES:EDI ; Rellena 16000 x 4 bytes = 64000 bytes = 64K con el valor de Col db $F3, $66, $AB {rep stosd} ; Recupera el ES original pop es End;
EDIT: sabía que se me iba a adelantar, jejejeje... Y como alguien dijo, programar es darle a la imaginación
2062
« en: Viernes 24 de Octubre de 2008, 21:13 »
cualquier otro valor seria una aberracion sin ningun sentido. Peores cosas se han visto...
2063
« en: Viernes 24 de Octubre de 2008, 18:12 »
Un sencillo truco para poder echar vistazos interesantes a cierta información que mandan los servidores de páginas web sin necesidad de instalar nada nuevo... Funciona en todos los sistemas operativos a mi alcance. $ telnet www.#####.com 80
Se nos queda el cursor parpadeando, como si estuviera colgado, pero no. Si escribimos HEAD / HTTP/1.1 (seguid escribiendo, en mayúsculas, aunque no aparezca por pantalla) y le damos a Enter 2 veces, podremos ver el resultado: HTTP/1.1 400 Bad Request Date: Fri, 24 Oct 2008 16:00:21 GMT Server: Apache/2.2.9 (Unix) mod_ssl/2.2.9 OpenSSL/0.9.7a mod_auth_passthrough/2. 1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.3 Connection: close Content-Type: text/html; charset=iso-8859-1 Se ha perdido la conexión con el host.
Interesante, ¿no? telnet foros.#####.com 80 Hacemos una conexión al puerto 80 (el puerto por defecto del protocolo HTTP) del servidor especificado. HEAD / HTTP/1.1 Petición HTTP de cabecera al servidor web. GET es la que usan los navegadores para obtener las páginas web. También se puede usar y generalmente devuelve la cabecera. Ahora busquemos por ejemplo "Apache/2.2.9 exploit" en Google. Con un poco de conocimiento y suerte, podremos llegar a tener una cuenta de administrador en el servidor. Les aconsejo a los administradores del sistema, si quieren que su servidor esté bien protegido, que cambien estos valores o que prohíban al servidor mostrar la cabecera en las respuestas (aparte de mantener el servidor y los añadidos siempre actualizados y parcheados).
2064
« en: Viernes 24 de Octubre de 2008, 17:56 »
2065
« en: Viernes 24 de Octubre de 2008, 17:54 »
como tu codigo no contempla valores repetidos A lo mejor es lo que quiere si if (!nodo) seria preguntar por si nodo == NULL No necesariamente. Ten en cuenta que NULL está definido por el SO y puede ser cualquier valor, aunque en todos los SOs que conozco es 0. Sin embargo, si en un determinado SO no fuera así, poniendo if(!nodo) incurres en un error y habría que cambiarlo, cosa que no ocurriría si pusieses la alternativa. Es mejor ésta puesto que es más portable (de hecho, para eso se inventó una constante NULL). Un saludo y ¡acabemos ya este post!
2066
« en: Viernes 24 de Octubre de 2008, 15:05 »
asi con el memcpy copio el contenido y no la direccion Pero no olvides hacer un free() de los malloc() que hayas hecho. Sigo pensando que con POO quedaría mucho más bonito, puesto que tienes destructores que se encargan de esto. nodo_t *creaNodo(arbol_t *arbol, void *valor, nodo_t *der, nodo_t *iz)
Además, ya no necesitas el parámetro arbol (de hecho, no lo necesitas, salvo por la llamada al puntero de función ese, que no me gusta nada  ). En fin, encantado de guiarte, un saludo.
2067
« en: Viernes 24 de Octubre de 2008, 14:00 »
Moskito, tus rspuestas, aunque no me ayudaron mucho, me hicieron buscar informacion sobre funciones que no conocia Me alegro, porque ese era el objetivo  . Declaro un vector[N] ese N sera "atoi(argv[1])" porque no quiero que tenga una longitud definida ¿Qué has hecho con este problema? matriz[fila][columna]=(*p_mat)-48; No está mal, veo que vas aprendiendo  aunque un char * lo puedes recorrer como si fuera un char[], es decir matriz[fila][columna]=entrada - 48;
2068
« en: Viernes 24 de Octubre de 2008, 12:31 »
Habría que tener en cuenta también lo que han dado en clase.... Perdona, pero no soy adivino. Si es el caso, que lo diga... De todas formas, si quiere hacerlo exactamente como dice, no tiene otra opción que usar memoria dinámica. o puedes meterlos uno a uno Desde luego así es más sencillo porque no hay que recorrer la entrada, sino encajarlos directamente en vector[]. Pero tanto como muchísimo más fácil... Recorrer una cadena tampoco es que sea muy difícil.
2069
« en: Viernes 24 de Octubre de 2008, 12:22 »
Personalmente creo que complicas las cosas sencillas, pero bueno... typedef struct { int sizeTipo; //Tamaño del dato a almacenar nodo_t *raiz; _funCmp_t funCmp; //Funcion de comparacion _funPrint_t funPrint; //Funcion de impresion }arbol_t;
Si vas a meter punteros a funciones en una estructura, mejor usa C++ y objetos. arbol->raiz = arbolInsert(arbol, arbol->raiz, (void *)&i); i =4; arbol->raiz = arbolInsert(arbol, arbol->raiz, (void *)&i); i =3; arbol->raiz = arbolInsert(arbol, arbol->raiz, (void *)&i); i = 7; arbol->raiz = arbolInsert(arbol, arbol->raiz, (void *)&i); }
Tienes un error de concepto en estas líneas. Tú lo que estas insertando en el árbol no son los valores de i, sino el puntero a i, por lo tanto es lógico que nodo_t *nodo y void *aIngresar sean el mismo, puesto que es &i (que siempre es el mismo, aunque cambies el valor de i). Al hacer en main() i =4; y luego i = 7; cambias el valor apuntado por &i, no &i. Por tanto, en el árbol, sólo has insertado un nodo con el puntero, al que vas cambiando el valor al que apunta, pero no creas un nuevo valor. Vas a tener que reservar memoria por cada elemento que desees insertar, porque sino simplemente lo sobreescribes. Algo como: int *i; i = (int *) malloc(sizeof(int)); *i = 5; arbol->raiz = arbolInsert(arbol, arbol->raiz, (void *)i);
Espero haberme explicado, un saludo.
2070
« en: Viernes 24 de Octubre de 2008, 10:23 »
Creo que tu problema fundamental es que no tienes en cuenta que cuando TFormClasif1.btnCalcularFac1Click() termina, se pierden el valor de todas las variables locales (n, n2, factorial, factorial2, i, i2, acumulador, RS). Aparte, cada vez que le das al click, pones acumulador a 1, con lo que, aunque tuviera un valor previo (que no lo tiene), lo perdería. Si quieres que acumulador mantenga el valor, tienes que declararla como global, o bien (más cutre) utiliza un objeto invisible (una caja de texo) que mantenga el valor. Espero haberte aclarado el error.
2071
« en: Viernes 24 de Octubre de 2008, 06:41 »
si te dan dinero sin trabajar... alguien trabajaría... ? Aunque para mí no se trata de que me moleste su dinero o trabajo, sino de una manera de entender las cosas, de saber compartir.
2072
« en: Jueves 23 de Octubre de 2008, 20:37 »
2073
« en: Jueves 23 de Octubre de 2008, 18:59 »
que pasa si un usuario del sistema ingresa y bloquea el registro (poniendole el estado a 1), pero justo en ese momento se reinicia la PC, el registro se va a quedar bloqueado y nadie podra acceder ya que sigue estando bloqueado Efectivamente, tienes razón, pero ese problema que mencionas en inherente a cualquier sistema concurrente. ¿Qué pasa en un SO cuando un proceso bloquea un recurso y luego se cuelga? Exactamente lo mismo. Es un problema harto complicado de solucionar, aunque se me ocurre que podrías ponerle un time-out al bloqueo, es decir, que pasado cierto tiempo el registro quede de nuevo habilitado para el acceso. Un saludo y suerte.
2074
« en: Jueves 23 de Octubre de 2008, 17:18 »
Uf, te picaste  . Os aconsejo que si copiáis funciones, por lo menos os toméis el tiemp de entenderlas Se lo decía a bobo, a ti te critico por no intentar enseñar, sino por hacer la tarea sin más... Eso es lo que está mal. lo mas seguro es que las personas que preguntan saben muy poco de viasual basic Precisamente por ello hay que enseñarle VB, no copiar-pegar... Poniéndoles el código no se van a enterar, lo van a usar tal cual y cuando tengan que hacer algo ligeramente diferente no sabrán modificarlo para esa nueva funcionalidad. No sirve de nada poner el código, hay que explicar las cosas, dar ejemplos y que piensen cómo adaptarlo a su situación concreta. Eso es programar. Lo otro es "usar el Word". por que a tu pregunta sobre el archivo .INI no respondi tu pregunta, cierto?? No sé de qué hablas, refréscame la memoria podrida que tengo... Hey, Moskito, me caes bien,... please, no discutamos ... Sin ánimo de ofender, me da igual si te caigo bien o no, esa no es la cuestión. Y discutir es algo sano y natural. No pasa nada. No hay por qué enfadarse ni nada por el estilo. Para algo se inventó el lenguaje. Un saludo y lee bien los posts para evitar molestas confusiones.
2075
« en: Jueves 23 de Octubre de 2008, 16:33 »
Te regalare dos de mis "super funciones" Me parece loable tu actitud, pero muy poco didáctica. Así sólo enseñas a usar copiar-pegar y no a programar. Os aconsejo que si copiáis funciones, por lo menos os toméis el tiemp de entenderlas. Y pon todas las declaraciones juntas, sino no hay quien lea eso. Open RutaArchivo For Output As #1 No uses números fijos (#1) ¿quién sabe si ese descriptor está siendo usado? Usa FreeFile() # que es capaz de leer datos de un bloc # 'de notas que este ordenado por filas y columnas separadas por comas # 'Comentario: NO UTILIZAR ESTE PROCEDIMIENTO CUANDO EL ARCHIVO DE LECTURA DEL BLOC DE NOTAS # 'CONTENGAN MUCHAS FILAS O MUCHAS COLUMNAS SEPARADAS POR COMAS (mas de 10 mil filas y/o columnas) Por cierto, las cosas no se guardan en el bloc de notas, sino en un fichero de texto, que puedes abrir con el programa que te dé la gana. No confundamos las cosas. Y puedes escribir todos los datos que se te antojen, eso sí, si son muchas líneas no uses el Bloc de Notas de Windows para ojearlo, que se cuelga. El VB no tendrá problemas en leerlo, aunque sean millones de líneas. Saludos
Páginas: 1 ... 81 82 [83] 84 85 ... 100
|
|
|