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

#1
Prueba con algo como:
Código (sql) [Seleccionar]
SELECT producto, fecha, cantidad FROM (SELECT * FROM tabla ORDER BY fecha DESC) s GROUP BY producto

Si por algún casual usas MySQL y diese un error asegúrate de que tienes desactivado ONLY_FULL_GROUP_BY.

Un saludo!

#2
Java / Re: Problema con HashMap
27 Diciembre 2017, 18:46 PM
Mira la documentación sobre entrySet (https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html#entrySet()).

CitarReturns a Set view of the mappings contained in this map. The set is backed by the map, so changes to the map are reflected in the set, and vice-versa. If the map is modified while an iteration over the set is in progress (except through the iterator's own remove operation, or through the setValue operation on a map entry returned by the iterator) the results of the iteration are undefined. The set supports element removal, which removes the corresponding mapping from the map, via the Iterator.remove, Set.remove, removeAll, retainAll and clear operations. It does not support the add or addAll operations.
#3
Noticias / Re: Intel descataloga varios procesadores
11 Diciembre 2011, 20:51 PM
Supongo que será para reducir costes...tener un amplio catálogo de productos es más caro que tener uno más reducido..
#4
Muchas gracias a ambos! AL final el programilla que estaba haciendo no ha tenido mucha utilidad, porque no he conseguido encontrar el patrón que sigue para los .docx (si para los .doc), pero aun así me ha servido para aprender algunas cosillas gracias a vuestra ayuda.  :D
Un saludo!
#5
Jeje, esta tarde me he dado cuenta de eso...a partir de ahora seguiré la máxima de no tocarás código ajeno   ;D
He conseguido echar a andar el código pero he tenido que poner todo el código de la función cargar_fichero en el main porque no consigo llamar correctamente a la función...
La verdad es que todavía estoy intentando terminar de entender los punteros...
Yo a tu función cargar fichero la llamo más o menos así:
FILE * fp = fopen(argv[i], "rb");
char ** contenido;
unsigned long bytes;
cargar_fichero(f, contenido, &bytes);

y después a buscar le paso
buscar(*ft, cadena, &bytes)
¿Qué es lo que estoy haciendo mal con los punteros?, porque me daba un fallo de segmentación creo que en el malloc...por eso he puesto el código de la función en el main y en vez de crear contenido como un char ** lo he creado como un char * y así si que he conseguido que funcionase...

Muchas gracias por la ayuda!
#6
Yo conozco dos jueces online...
El de la OIE (Olimpiada Informatica Española): http://olimpiada-informatica.org/
El de USACO (USA Computing Olimpiad): http://www.usaco.org/

Un saludo.
#7
Llevo toda la tarde intentándolo hacer funcionar, pero por algún motivo el fread parece que no funciona, porque ft no tiene el inicio del texto del archivo...
He probado todo lo que se me ha ocurrido y no he conseguido nada...fread devuelve que ha leido el número de caracteres correcto, pero luego nada, no están los caracteres que deberían estar...

Pongo aquí el código que tengo hecho (es posible que esté un poco guarrete de tanto poner printf's)...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int buscar(char * ft, char * cadena, unsigned long * bytes);
unsigned long flen(FILE *f);
int cargar_fichero(FILE *f, char *contenido, unsigned long *nbytes);

int main (int argc, char* argv[]){
    int i;
    FILE * fp;
    char * ft;
    int a;
    unsigned long bytes;
    char data[] = {0x0D, 0x0C, 0x0D, 0x0D, 0x03, 0x0D, 0x0D, 0x04, 0x0D, 0x0D, 0x03, 0x0D, 0x0D, 0x04, 0x0D, 0x0D, 0x00};
    for(i=1; i < argc; ++i){
        fp = fopen(argv[i], "rb");
        if(fp != NULL){
            if((a=cargar_fichero(fp, ft, &bytes)) == 0)
            return -1;

            if(buscar(ft, "footnotes.xml", &bytes) == 0)
                printf("%s\n", argv[i]);
            else{
                printf("\n");
                fseek ( fp , 0 , SEEK_SET ); //Devolvemos puntero al inicio
                if(buscar(ft, data, &bytes) == 0)
                    printf("%s\n", argv[i]);
            }
            return 0;
            fclose(fp);

        }else
            printf("No se ha podido abrir el archivo %s", argv[i]);

    }
    return 0;
}
/*
    Busca en el archivo la cadena indicada (imitiendo el \0)
*/
int buscar(char * ft, char * cadena, unsigned long * bytes){

    int longi = strlen(cadena);
    if(longi < 1)
        return -2;
    int i=0;
    int k=0;
    while(i < *bytes){printf("Va bien con c=%x, k=%d\n", ft[i], k);
        if(ft[i] == cadena[k]){
            k++;
            while(k < longi && ++i < *bytes && ft[i] == cadena[k])
                k++;
            if(k == longi)
                return 0;
            else if(i >= *bytes){
                return -1;
            }else{
                k=0;
            }
        }else
        ++i;

    }
    return -1;

}

unsigned long flen(FILE *f){
    unsigned long pos, len;

    pos = ftell(f);
    fseek(f , 0 , SEEK_END);
    len = ftell(f);
    fseek(f , pos , SEEK_SET);

    return len;
}

int cargar_fichero(FILE *f, char *contenido, unsigned long *nbytes){
     if((contenido = (char*) malloc((*nbytes = flen(f)) * sizeof(char))) == NULL)
        return 0;


    return fread(contenido , sizeof(char) , (*nbytes/sizeof(char)) , f);
}
#8
OK, muchísimas gracias por la ayuda!
#9
Hola, estoy intentando hacer un programa en C que descubra si un archivo de Word tiene un pie de página...Para ello tengo que buscar una secuencia de de caracteres en el archivo y me he montado una funcioncilla que es la siguiente:
int buscar(FILE * fp, char * cadena){
    char car;
    int longi = strlen(cadena);
    if(longi < 1)
        return -2;
    int i=0;
    int k=0;
    while((car = fgetc(fp)) != EOF){
        if(car == cadena[i]){
            k++;
            while(i+1<(longi-1) && !feof(fp) && (car=fgetc(fp)) == cadena[++i])
                k++;
            if(k == longi-1)
                return 0;
            else if(feof(fp))
                return -1;
            else
                i=k=0;   
           
        }
    }
    return -1;
   
}


La he probado con archivos de texto y funciona perfectamente...
El problema es que cuando le paso el .doc o .docx deja de buscar antes de llegar al final del archivo...he abierto el .doc con un editor hexadecimal y me he encontrado que dentro del propio archivo hay caracteres con FF y por lo tanto en cuanto se llega allí se cree que es el EOF y termina la búsqueda...
¿Hay alguna forma de detectar que no es el auténtico fin de fichero y continuar la búsqueda?
#10
Bases de Datos / Re: WHERE id IN subquery...
21 Julio 2011, 20:02 PM
Pues simplificando y quitando todo lo que no está relacionado la estructura sería algo como

tabla users
idtotal_points
1700
2500
31000

Entonces la query debería rellenar la tabla statspos así (teniendo que se ordena de forma descendente de puntos):


idtypetotal_pos
102
203
301

Respecto a lo del procedure, no estoy muy familiarizado con ellos, pero...no se borran cada vez que reinicias mysql?