|
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 - dheak
26
« en: Miércoles 22 de Mayo de 2002, 19:10 »
hla a tod@s!
Alguien sabe alguna cosa (por poquito q sea) sobre las funciones hashing? Me es indiferente la informacion que tengais, documentos, codigo fuente (da igual el lenguaje), o alguna direccion web donde puedo encontrar una buena explicacion.
Bien, gracias por vuestra ayuda. Saludos.
27
« en: Martes 21 de Mayo de 2002, 20:46 »
hla cecilia!
Prueba con usar la libreria time.h, contiene funciones para el manejo del reloj del sistema (los procesos no afectan a su funcionamiento ya que va en un chip aparte). Por ejemplo, la función clock determina el tiempo usado del procesador. Retorna el tiempo usado por el programa desde que se le llama. En caso de error o overflow retorna -1. Ejemplo:
#include <stdio.h> #include <time.h>
int main( void ) { long int i=0; clock_t comienzo;
comienzo=clock(); for( i=0; i<10000; i++ ) printf( "-" );
printf( "Número de segundos transcurridos desde el comienzo del programa: %f sn", (clock()-comienzo)/(double)CLOCKS_PER_SEC);
return 0; }
Espero que te sirva. Saludos.
28
« en: Lunes 20 de Mayo de 2002, 23:34 »
Si he entendido bien tu problema (q no estoy muy seguro) aqui te propongo un codigo para buscar una palabra dentro de la lista.
void buscar(lista l, char pal[]) { lista aux = l; while ((aux != NULL) && (strcmp(pal,aux->a.averia != 0)) { aux = aux->enlace; } if (aux != NULL) { printf("n Matricula: %s",aux->a.matri); printf("n Propietario: %s",aux->a.nbp); } }
29
« en: Viernes 17 de Mayo de 2002, 18:50 »
hla a todos/as! Me gustaria saber que es eso de los mensajes u2u, pa que sirve y todas esas cosas.
Ala, hasta otra!
30
« en: Jueves 16 de Mayo de 2002, 23:17 »
Hola hades. Para sumar dos numeros binarios debemos tener en cuenta que trabajos en base 2 (o modulo 2), es decir, que solo disponemos de dos digitos {0,1}, los demas numeros son simplemente combinaciones de estos. Pues bien, nosotros normalmente trabajamos en modulo 10, es decir que solo tenemos 10 digitos {0,1,2,3,4,5,6,7,8,9}, el resto de numeros tambien es solo combinaciones de estos.
Pues bien, para sumar dos numeros es igual que en decimal, pero con solo dos digitos. Por ejemplo, para sumar 9 mas 1. Como despues del 9 no hay mas numeros volvemos al principio, es decir, al 0 (ya que en base 10 despues del 9 va el 0) y como hemos vuelto una vez al principio se debe poner un 1 (carry) en la siguiente posicion (9+1=0 -> 0 + carry = 10).
Pues en binario es lo mismo pero con solo dos representaciones, 0 y 1. Asi para sumar 10 + 11, hacemos lo siguiente.
10 + 11 ----- 01
Pero como hemos tenido un carry (nos llevamos una) en la siguiente posicion debemos sumar ese carry. Asi el resultado nos queda 101. Asi pues el 10 + 11 = 101. Y asi podemos sumar cualquier numero en binario tal y como lo hacemos en decimal.
Espero no haberte rallao mucho. ;-) Saludos.
31
« en: Miércoles 15 de Mayo de 2002, 00:59 »
oye felipe, explica un poquito mejor lo que quieres hacer porque no te entiendo. ¿que quieres hacer? ¿que quieres pintar aleatoriamente? Los vertices son cuando los tres rangos llegan a sus extremos (0 o n, suponiendo q la matriz sea n*n*n, es decir, tenemos 2^3 posibilidades o vertices). En fin, explicalo un poco mas detallado y miraremos a ver que se puede hacer.
Saludos.
32
« en: Martes 14 de Mayo de 2002, 23:26 »
Hola vicentillo.
Oye aqui te mando el quiksort. Parte del hecho de que es mas facil ordenar dos vectores de n/2 posiciones que uno de n posiciones.
Este es recursivo y ordena el vector v que es de enteros. Si quieres el no recursivo dimelo.
proc Quiksort (v:tabla (1...N):entero, inf:entero, sup:entero) var x:entero, p:entero, temp:entero fin var inicio si inf < sup entonces p = (sup+inf) div 2 x = v(p) repetir mientras (v(inf) < x) inf = inf + 1 fin mientras mientras (v(sup > x) sup = sup - 1 fin mientras si (inf < sup) entonces si (inf = p) entonces p = sup fin si si (sup = p) entonces p = inf fin si temp = v(inf) v(inf) = v(sup) v(sup) = temp inf = inf + 1 sup = sup - 1 fin si hasta (inf > sup) Quiksort(v,inf,p) Quiksort(v,p+1,sup) fin si fin inicio
Saludos.
33
« en: Martes 14 de Mayo de 2002, 22:56 »
hola pakete.
Me parece que no te queda mas remedio que tener que sumarle 7 al dia y controlar q no pase de 31 y esas cosas.
Lo que si podrias hacer es una cosa. Hacerlo en C++. Son los mismos codigos que en C (todo lo que lleves hecho hasta ahora te debe compilar igual) pero ademas tienes el concepto de sobrecarga de operadores. Puedes sobrecargar el operador + o el operador += para asi no tener q andar siempre comprobando.
fecha& operator+(fecha& a, int& b) { if (da_day = a.da_day + b) > 31 { if (da_mon<12) da_mon++; else { da_mon = 1; da_year++; } }
Todo esto metelo en una clase (struct con funciones) donde contenga las variables da_mon, da_year y da_day.
class fecha { int da_mon; int da_year; int da_day; public: ... // aqui irian los constructores, destructores y demas operadores y funciones miembro. fecha& operator+(fecha& a, int& b) }
Esto te ira bien para poderlo utilizar tal que asi:
void main() { fecha x; getdate(&x); x = x + 7; }
Pero no se si la funcion getdate() ya que no la conozco, te aceptara como parametro eso. Espero que te funcione.
Saludos.
34
« en: Lunes 13 de Mayo de 2002, 23:40 »
eh! muchas gracias kolme. Llevo poco tiempo con este sistema y todavia no me lo conozco demasiado y tampoco conozco mucho software. Instale kdevelop y era mas o menos lo que estaba buscando.
Saludos. dheak
35
« en: Lunes 13 de Mayo de 2002, 01:49 »
oye, aki te dejo el programita de las bases de datos pa ke puedas mirartelo. Por fin...
Saludos.
36
« en: Lunes 13 de Mayo de 2002, 01:20 »
me parece extraño que no te funcionase y mas que siempre te de uno (quiza es que todos las pruebas que has hecho las has hecho con numeros coprimeros). Lo acabo de compilar (con gcc pero debe funcionar en todos, es codigo ANSI C) y ha funcionado perfectamente. No se que puede haber pasado. Aqui te mando mi codigo, pero es exactamente igual. Tambien he probao el tuyo (cambiando el cout y cin por printf y scanf) y funciona perfectamente. Pos no se. Prueba de compilar esto y te debe funcionar.
Saludos.
#ifdef HAVE_CONFIG_H #include <config.h> #endif
#include <stdio.h> #include <stdlib.h>
int mcd(int a, int b);
int main(int argc, char *argv[]) { int a, b; printf("Introduce el primer numero: "); scanf("%d", &a); printf("nIntroduce el segundo numero: "); scanf("%d", &b); printf("nEl mcd de %d y %d es: %d", a,b,mcd(a,b)); return EXIT_SUCCESS; }
int mcd(int a, int b) { while (a != b) { if (a > b) a = a - b; else b = b - a; } return a; }
37
« en: Sábado 11 de Mayo de 2002, 19:41 »
Hola phoenix, aqui tienes los dos algoritmos que buscabas (bueno, uno pero en sus dos versiones). Imagino que funcionan, el no recursivo lo he probado, compilado, utilizado, etc. y funciona bien. El recursivo no lo he probado (me parece bastante inutil teniendo el otro) pero imagino que tambien funciona (sino funciona dilo). Te lo paso en pseudocodigo, imagino que lo sabras pasar a C, sino dimelo.
Saludos.
funcion mcd(a:entero, b:entero):entero inicio mientras ( a != b ) si ( a > b ) a = a - b sino b = b - a fin si fin mientras retorna (a) fin
funcion mcd(a:entero , b:entero):entero inicio si (a = b) retorna (a) sino si (a > b) retorna (mcd(a-b, b)) sino retorna (mcd(a , b-a)) fin si fin si fin
38
« en: Sábado 11 de Mayo de 2002, 18:17 »
Saludos Kolme.
No, a lo que me refiero es si existe algun compilador el cual venga con un entorno grafico (de ahi la analogia con turbo c), ya que con el gcc debes compilarlo y linkarlo y se hace un poco pesado. Es a eso a lo que me vengo a referir.
Saludos
39
« en: Viernes 10 de Mayo de 2002, 21:18 »
eh! a las guenas noches!
Bueno te he hecho un pequeño programilla que te dibuja una linea con el mouse. El metodo utilizado es "algo" (por no decir mucho) chapucero, pero imagino que funcionara. No lo he compilado, ya que usa alguna libreria (dos.h) la cual no puedo utilizar. En principio, debe funcionar con el Turbo C.
Bueno existe otro metodo mejor que es programando las interrupciones del mouse, pero es mucho mas complicado y me temo que ahi solo te puedo ayudar explicandote el metodo, pero de codigo nada.
Bueno espero que te sirva. Si no te funciona me das el toque y lo miro. Saludos.
#include <dos.h> #include <stdio.h>
/* modo grafico 13h y modo consola */
#define MOD_GRAF 8 #define MOD_TEXT 1
void mostrar(void); int xpos(int modo); int ypos(int modo); int click(void); void inimodo(char mode);
union REGS reg;
void main() { int x, y, a; int color; inimodo(0x13); color = 1; /* creo que el azul */ while ((a = click()) != 1); /* mientras el boton izquierdo no sea presionado */ /* mientras el boton siga presionado pinta un pixel el la posicion del mouse */ do { x = xpos(MOD_GRAF); y = ypos(MOD_GRAF); putpixel(x,y,color); } while ((a = click()) == 1); }
void inimodo(char mode) { /* se puede utilizar el initgraph() de to la vida */ asm xor ah, ah asm mov al, mode asm int 10h }
int xpos(int modo) { /* devuelve la coordenada x del mouse */ reg.x.ax = 0x3; int86(0x33, ®, ®); return reg.x.cx/modo; }
int ypos(int modo) { /* devuelve la coordenada y del mouse */ reg.x.ax = 0x3; int86(0x33, ®, ®); return reg.x.dx/modo; }
int click(void) { /* devuelve si hay algun boton presionado, 0 = no, 1 = izquierdo, 2 = derecho */ int r = 0; reg.x.ax = 0x5; reg.x.bx = 0; int86(0x33, ®, ®); if ((reg.x.ax) & 1) r = 1; else if ((reg.x.ax>>1) & 1) r = 2; return r; }
void mostrar(void) { /* muestra el puntero de la rata */ reg.x.ax = 0x1; int86(0x33, ®, ®); }
40
« en: Viernes 10 de Mayo de 2002, 20:20 »
Hola a todos! Alguien sabe algun compilador para Linux del estilo del Turbo C/C++?
Saludos.
41
« en: Viernes 10 de Mayo de 2002, 20:11 »
Hola gero! eh, con respecto al programilla ese que hiciste del laberinto, me gustaria que me lo pasases (si no te importa, vamos) para poder ver un poco el codigo y como esta programado (siempre se puede aprender algo). Me es indiferente la version Pascal o C.
Gracias de antemano. Saludos
42
« en: Martes 7 de Mayo de 2002, 23:11 »
Bueno, ya le di esta direccion a otro coleguita del foro que queria hacer otra cosilla con el teclado. En ese web hay un manual o curso donde te enseñan a programar distintos dispositivos, entre ellos el teclado. Hay una manera de controlar el teclado antes que nadie que es capturando los keycodes, lo cual alli te explica. Tambien hay otra manera mas guai de hacerlo. Es cambiando la interrupcion del teclado. Haces una funcion que te capture la pulsacion esa que dices (o que te haga cualquier otra cosa) y que luego llame a la funcion original que tenia antes la interrupcion (mas que na pa no hacer ningun desastre). Debes poner la direccion de memoria de tu funcion en la tabla de interrupciones del DOS. Tambien te explica algo de esto alli. La direccion es: www.toptutoriales.com/prog/juegos/juegos2.htmSaludos.
43
« en: Martes 7 de Mayo de 2002, 23:00 »
#include <stdio.h>
int fib(int n);
void main() { int n = 10; printf("%d", fib(n)); }
int fib(int n) { if ((n == 1) || (n==2) return(1); else return (fib(n-1)+fib(n-2); }
44
« en: Sábado 4 de Mayo de 2002, 17:14 »
Hola a todos. Tengo un pequeño problemilla con el funcionamiento del foro.
El problema es que no me deja cerrar la sesion, es decir, cuando le doy a "cerrar sesion" me vuelve a cargar la pagina pero sigo teniendo la sesion de usuario abierta. Le vuelvo a dar y idem. No tengo ninguna cookie aceptada, solo la del principio para que pueda iniciar la sesion. He aceptado tambien la del final, pero tampoco cierra. Uso el navegador konqueror de KDE.
Saludos.
45
« en: Viernes 3 de Mayo de 2002, 19:36 »
Hola! Eh, la verdad es que no tengo ni puta idea de pascal (o mas bien poca), pero tengo el problema resuelto en pseudocodigo, lo cual no te sera muy dificil de pasar a Pascal, C o cualquier otro lenguaje.
proc OchoReinas (y:entero, var t:tabla(1...8,1...8):entero) var i:entero fin var inicio si y <= 8 entonces para i (1...8) si t(i,y)=0 entonces t(i,y) = y+10 marcar(i,y,t) OchoReinas(y+1,t) desmarcar(i,y,t) fin si fin para sino "Solucion encontrada" fin si fin inicio
proc desmarcar(x:entero,y:entero,var t:tabla(1...8,1...8):entero) var i:entero, j:entero fin var inicio para i (1...8) para j (1...8) si t(i,j) = y entonces t(i,j) = 0 fin si fin para fin para t(x,y) = 0 fin inicio
proc marcar(x:entero,y:entero,var t:tabla(1...8,1...8):entero) var i:entero fin var inicio para i (1...8) si t(i,y) = 0 entonces t(i,y)=y fin si si t(x,i) = 0 entonces t(x,i) = y si t(x-i,y+i)=0 entonces t(x-i,y-i)=y fin si fin si si (x-i >= 1) ^ (y+1 <= 8) entonces si t(x-i,y+i)=0 entonces t(x-i,y+i)=y fin si fin si si (x+i <= 8) ^ ((y-i) >= 1) entonces si t(x+i,y-i)=0 entonces t(x+i,y-i)=y fin si fin si si (x+i <= 8) ^ (y+i <= 8) entonces si t(x+i,y+i)= 0 entonces t(x+i,y+i) = y fin si fin si fin para fin inicio
Espero que este codigo te sirva, si no te funciona bien, dimelo y te lo revisare (el var delante de las variables significa que estan pasadas por referencia).
Saludos
46
« en: Viernes 3 de Mayo de 2002, 19:03 »
Vamos a ver, no se muy bien que es lo que quieres que haga tu programa.
Que es lo que quieres hacer, que una linea se dibuje mientras mantienes apretado el boton del mouse y lo vas moviendo, y se deje de dibujar cuando el boton se suelte (tal y como lo hace, por ejemplo, el programa paint).
O, por el contrario, haces un click, se empieza a dibujar la linea y, cuando vuelves a hacer otro click se deja de dibujar (este segundo metodo es mas sencillo).
Saludos.
47
« en: Jueves 2 de Mayo de 2002, 19:40 »
Hola doblejota.
No se muy bien como esta estructurado el fichero que te pasan, asi que te paso una pequeña rutinilla para que puedas ver como cargar datos desde un fichero.
La rutina recoge los datos del fichero caracter a caracter, asi que para buscar el siguente dato, solo tienes que encontrar el caracter que los separa (puede ser una ',' un ';' un '-' etc).
#include <stdio.h>
void main() { FILE *pfile; char car; char palabra[25]; int i, j; i = 0; j = 0; // abrir el archivo pfile = fopen("ARCHIVO.TXT","r");
/* recoger caracter a caracter hasta final de fichero (EOF) o hasta 5 palabras separadas por ',' */
while (((car = getc(pfile)) != EOF) && (j < 5)) { if (car == ',') { /* si encuentra ',' imprime palabra y pasa a la siguiente */ printf("%s", palabra); j++; i = 0; } else { /* sino pone car en el array */ palabra = car; i++; } } fclose(pfile); }
Esta rutina parte de que el archivo esta guardado como: "palabra1,palabra2,palabra3,palabra4,palabra5"
Saludos.
48
« en: Jueves 2 de Mayo de 2002, 00:02 »
Gracias por la direccion.
Saludos.
49
« en: Miércoles 1 de Mayo de 2002, 22:48 »
vaya, me respondo mis propias preguntas.
Bueno, pongo esto porque supongo que mucha gente tendra el mismo problema. Bueno, pues aqui va la solucion:
Tenemos la ecuacion log(base n) x. Pues como en C/C++ no tenemos una funcion para calcular esto (o al menos yo no la se) hay que construirla:
double logBase(double x, double base) { return(log(x)/log(base)); }
Bueno, espero que os sirva de algo (a mi me ha servido). Gracias a xAn.
Saludos.
50
« en: Martes 30 de Abril de 2002, 23:51 »
hola kolme. Yo uso el navegador konqueror de kde y al principio me pasaba lo mismo que a ti, no me identificaba como usuario. Acepte una cookie (solo una, la que te manda cuando pones iniciar sesion) y ahora ya me identifica correctamente. Asi que creo que debe ser un error que da el opera 6. Puedes probar con otro navegador y mirar si pasa lo mismo, si ocurre, problema del navegador, sino, le echamos los perros al sr solocodigo. ;-)
|
|
|