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ú

Temas - fileteruso

#1
Estoy haciendo un proyecto y necesito almacenar de manera interna en un documento PDF pequeños datasets que luego puedan ser extraídos. Estos datos pueden ser de tipo entero, real, booleano y cadenas de texto. A nivel de guardado creo que PDF trae de manera básica arrays donde podría almacenar esos datos, pero me surgen dudas respecto a la extracción, sobre todo en cuanto a la identificación de esos datos.

¡Si alguien tiene alguna idea estaría muy agradecido de que la compartiera!

ACTUALIZACIÓN (07/04):
He visto que existen ciertos objetos internos en PDF que se llaman diccionarios y que a su vez podrían contener otros objetos de tipo array que pueden servir para mi propósito. El problema que tengo ahora es todo el tema de identificación del objeto, tanto al guardar como al extraer.

ACTUALIZACIÓN (16/04):
Finalmente he visto que es posible usar la librería iText para Java que permite manipular documentos PDF. Estoy guardando datos en el objeto PDF Catalog que viene de manera predeterminada en todos los documentos PDF para evitar problemas de identificación ya que mediante el uso de iText el acceso y modificación de este objeto PDF Catalog es trivial.
#2
Buenas,

me ha surgido una dudilla haciendo un ejercicio básico de MPI, ¿al hacer un broadcast se espera confirmación de recepción por parte del resto procesos?


#include "mpi.h"
#include <stdio.h>
#include <stdlib.h>

int main (int argc, char *argv[]){
int numtasks, taskid, len, buffer, root, count;
char hostname[MPI_MAX_PROCESSOR_NAME];

MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &numtasks);
MPI_Comm_rank(MPI_COMM_WORLD,&taskid);
MPI_Get_processor_name(hostname, &len);

printf ("Task %d on %s starting...\n", taskid, hostname);
root = 0;
count = taskid;
if (taskid == root)
buffer = 23;
printf("Root: Number of MPI tasks is: %d\n", numtasks);

MPI_Bcast(&buffer, count, MPI_INT, root, MPI_COMM_WORLD);

printf("Buffer is %d from task %d\n", buffer, taskid);

MPI_Finalize();

}


La duda me ha surgido porque hay un error en él, que es que el tamaño de lo que se envía es igual al identificador del proceso que lo está ejecutando, y este error produce un interbloqueo. No entiendo por qué pasa esto. El broadcast como tal solo lo va a ejecutar el proceso maestro, así que para el código de arriba el count sería como un 0, lo que estaría mal. La cosa es que si meto un 0 a mano funciona y no entiendo por qué.

MPI_Bcast(&buffer, 0, MPI_INT, root, MPI_COMM_WORLD);


Solo es en el caso de que count sea taskid, que como repito al ejecutar el maestro sería 0, cuando no funciona.

La única conclusión posible a la que he llegado es que el broadcast espera confirmación de recepción del envío por parte del resto de procesos y al no llegar a recibirlo se produce el interbloqueo, pero no lo sé.

¡Un saludito y gracias!
#3
Hola, estoy intentando dar un valor a algunas posiciones de un array de chars y estoy teniendo un problema al final a la hora de devolverlo. Cuando le meto los valores se ve que lo está haciendo bien pero después, a la hora de imprimirlos, me devuelve, para cada posición que he escrito, el valor que le di al último. El código que llevo:

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

int main(int argc, char* argv[]){

int n = 0;
char line[80], input[80];
char *array[25];

for(;fgets(line, 80, stdin);){
       if(!strcmp(line, "Exit\n")){
    break;
       }

   //  Leer de la entrada estándar
   sscanf(line, "%s", input);
   array[n] = input;
   printf("%s\n", array[n]);
   n++;
}

for(int i=0; i<n; i++){
printf("%s\n", array[i]);
}
}


Para la siguiente ejecución:

fileteruso@vbox-ubuntu:~/Escritorio/Pruebas$ ./prueba
ESTO
ESTO
ES
ES
UNA
UNA
PRUEBA
PRUEBA
Exit
PRUEBA
PRUEBA
PRUEBA
PRUEBA


Si alguien puede ayudarme le estaría muy agradecido.
#4
Buenos días,

tengo que hacer un programa como práctica para la universidad y no se me ocurre ninguna solución posible a priori, si alguien puede ayudarme le estaría muy agradecido.

Tengo que hacer en Prolog una representación de una CPU anular con registros. Los registros se representan de la siguiente forma: regs/n donde n es cualquier número mayor o igual que 2. Los registros pueden llevar en su interior cualquier tipo de carácter, un ejemplo:


regs(a,b,c,d).


En la CPU hay 2 tipos de intrucciones swap/2 y move/1, y al ejecutarlas resulta lo siguiente:


ejecutar_instruccion(regs(a,b,c,d),swap(1,3),R).
R = regs(c,b,a,d).

ejecutar_instruccion(regs(a,b,c,d),move(2),R).
R = regs(a,b,b,d).


Este predicado ya lo he hecho, ahora me piden realizar un generador de código que te lleve de un estado inicial a un final de la siguiente manera:


generador_codigo(regs(a,b,c,d),regs(a,a,d,b),R).
R = [swap(2,3), move(1), swap(3,4)].


Resultando el número mínimo de instrucciones necesarias para alcanzar el estado final. No se me ocurre manera alguna de programarlo. Si alguien me pudiese ayudar y decirme algún algoritmo (no código como tal) que lo solucione le estaría muy agradecido.

Muchas gracias a todos de antemano.
#5
Java / Coordenadas de ratón al pulsar
11 Diciembre 2019, 13:09 PM
Buenas,

necesito sacar las coordenadas de un JFrame al pulsar el ratón sobre algún punto del mismo. En internet he encontrado que es posible usar MouseListener, pero según he visto de los métodos que ofrece ninguno permite devolver las coordenadas dentro del JFrame, ¿alguna idea?

Muchas gracias de antemano.

;D
#6
Buenas,

estoy intentando que una variable global de tipo int sea modificada por dos tipos de procesos: uno que le suma 1 y otro que le resta 1. Para ello he creado dos clases que implementan Runnable: una llamada Incrementador y otra llamada Decrementador. El problema que tengo es que no se cómo hacer para que desde la clase principal que crea e inicia los procesos se comparta la variable para ir sumándole y restándole uno simultáneamente un número de veces concretas. He intentado pasarla cuando instancio ambas clases en la principal antes de iniciar los procesos pero en el momento que paso por parámetro la variable que se modifica es la propia de las clases Incrementador y Decrementador.

(En el código de la clase principal de a continuación solo ejecuto el proceso del incrementador para comprobar si le suma 1)

Código clase principal:

public class Principal {
public static volatile int x = 0;

public static void main(String[] args) {
Incrementador inc = new Incrementador(x);
Thread hilo = new Thread(inc);
hilo.start();
System.out.println(x);
}
}


Código del incrementador:

public class Incrementador implements Runnable {
private int x;

public Incrementador(int x) {
this.x = x;
}

public void run() {
x=x+1;
}
}


Código del Decrementador:

public class Decrementador implements Runnable {
private int x;

public Decrementador(int x) {
this.x = x;
}

public void run() {
x=x-1;
}
}



Muchas gracias de antemano!
#7
Programación C/C++ / Problema entrada estándar
4 Diciembre 2018, 18:26 PM
Buenas a todos,

suponiendo que se tiene el archivo programa.c, que imprime la cadena que se le pasa por entrada estándar en el terminal de la siguiente forma:

echo "abcdef" | ./programa

como puedo hacer para que imprima abcdef por salida estándar, y que si ejecuto el programa sin entrada

./programa

que no imprima nada y no se quede esperando a introducir nada por teclado.

Muchas gracias a todos.