Voy a pegarle un cabezazo al teclado.

dagavi

#30 No estaba haciendo nada en concreto, es solo algo que me ha surgido (creo que leyendo alguna cosa xD).

No había visto el patrón Callback, he puesto esta palabra porque la he visto usada en algunos sitios con este fin (y coño, porque pensaba que ser avisado se le puede llamar callback xD), pero como indico en algún lado la idea es implementar un patrón observador.

Aun así por lo que he leído ahora en la wikipedia de callback hay lenguajes en los que se implementan usando gestores de eventos, de hecho se podría usar el código que antes he puesto para hacer el ejemplo que sale en wikipedia xD
De hecho el ejemplo que he puesto ya es una callback, al menos por lo que he entendido de la primera línea de la explicación de wikipedia xD

1 respuesta
MTX_Anubis

#31 Sí sí, si la implementación es parecida.

Pero el patrón callback se utiliza sobre todo en aplicaciones cliente/servidor, cuando el servidor tiene que hacer un callback al cliente. A efectos practicas viene a hacer lo mismo vaya pero te explico las diferencias.

Con el patrón callback si desde el cliente (o la vista o lo que sea) invoco un método del controlador y quiero que este me de una respuesta (o no) cuando termine de hacer lo que sea, ya sea porque he hecho un request solicientando información, para que me diga si ha tenido éxito, etc. y se suele utilizar sólo en esa invocación. De hecho, el callback se suele incluir en la signatura, no al crear el controlador :P

El patrón Observer/Observable lo que hace es notificar todos los cambios (que sean observables, se entiende) que haya en la clase observable a sus observers, sean ellos quienes invocan métodos en los observables u otros.

1
19 días después
Idontknow

Bueno para este lunes tengo que hacer un trabajo para Programación(Descripción del ejercicio, esta en catalan).

Se trata de hacer un "laberinto" que el usuario define el principio y el final. Y se tiene que mover por el laverinto hasta llegar al final.

El usuario no puede ponerse encima de algun obstaculo, dibujo dentro del pdf.
El usuario no puede salirse de la array.

Os dejo el codigo que he echo... hace dos dias que no veo el error que tengo y estoy hasta los cojones...

Ahora mismo estoy haciendo las funciones que traducen las coordenadas que introduce el usuario a la array. No se que pasa que se le va la bola.

A la espera del codigo arreglado xD

A ver si me podéis ayudar porque estoy hasta los cojones...

1 respuesta
elkaoD

#33 cambia tu estilo de programación, demasiado lioso. Sé más descriptivo, lo agradecerás tú dentro de unos meses, y nosotros para entender el código.

1 respuesta
Idontknow

#34 Gracias por la ayuda pero es que... necesito algo productivo xD.

dagavi

Y esto que tiene de productivo? :O

        switch (fi)
                {
                case 1:
                          fi=5;
                          break;
                case 2:
                          fi=4;
                          break;
                case 3:
                          fi=3;
                          break;
                case 4:
                          fi=2;
                          break;
                case 5:
                          fi=1;
                          break;
                default:
                    printf("ajsdadsa\n");
2 respuestas
Idontknow

#36 Yo que se. Productivo digo para este lunes... u.u quiero resultados xD

2 respuestas
elkaoD

#37 tío, lo siento mucho pero es que no me voy a poner a descifrar ese código, es inmanejable. Si al menos pusieras una duda concreta... ¿qué falla? ¿qué funciona? ¿qué debería hacer?

Y de verdad, hacer un código claro según lo vas escribiendo a la larga es muy beneficioso, acostúmbrate y lo agradecerás.

1 respuesta
BLZKZ

#38 tienes el enunciado en catalán y si no te enteras te jodes xD

Es que #37 te esfuerzas tan poco en dar información de tus dudas y facilitarnos el poder ayudarte que da miedo

1 1 respuesta
Amazon

#36 Yo ahí veo un claro

if (fi > 0 && fi < 6)
return (6-fi);

No, no me he leido esta parte del thread, pero por lo que se vé está pidiendo que le hagan el ejercicio y yo tengo mucho sueño xd.

1 1 respuesta
dagavi

#40 Por eso mismo digo, y lo mismo pasa con los otros casos de las letras (char)('A' + indice - 1)

70 de las primeras lineas se reducen en unas 10 y siendo generoso con la indentación.

#39 El enunciado no está ni en catalán, es un enlace a esta

1
Amazon

Lol lo del enunciado xd

NeB1

alguna duda en concreto tendrás, no? porque el nivel de programación parece bueno, no creo que te hayas quedado atascado y no sepas donde

Idontknow

Ahora mismo estoy haciendo las funciones que traducen las coordenadas que introduce el usuario a la array. No se que pasa que se le va la bola.

A ver si veis el error. He ido poniendo comentarios en cada cosa... no se yo tampoco lo veo tan difícil de entender... vale que lo he echo yo.+

Y no, no vengo a pediros que me hagáis el trabajo. Este post lo hice yo y no iba con estas intenciones.

Jajjajajajaj No había visto lo del enunciado... he puesto un link mal...

ENUNCIADO

25 días después
Amazon

Estoy a punto de reventar el teclado, el monitor y a mi hermano que está entrando por la puerta xDDD

Os explico, estoy en Java, y tengo un Combo, al que le meto manualmente 3 items, y despues de meterlos, uso la funcion .select(int); para elegir uno que coincide el texto con el de una tabla, de la siguiente manera:

final Combo cboCabeza = new Combo(ventanaModificar, SWT.PUSH);
cboCabeza.add("allen");
cboCabeza.add("estrella");
cboCabeza.add("plano");
for (int f=0;f<3;f++)
if (cboCabeza.getItem(f).toString() == tablaTornillos.getItem(i).getText(3).toString())
cboCabeza.select(f);

Pues resulta que en ningún caso entra dentro del if, y eso que le puse un

System.out.println(cboCabeza.getItem(f).toString() + tablaTornillos.getItem(i).getText(3).toString()

en el for y me saca lo siguiente:
allenestrella
estrellaestrella
planoestrella

Es decir, que en el segundo caso debería de entrar, pero no, no entra y por consiguiente, no me lo selecciona, y me estoy a punto de cortar las venas :(

Any help?

Amazon

Vale, soy retrasado xD.

for (int f=0;f<3;f++)
	if (cboCabeza.getItem(f).compareTo(tablaTornillos.getItem(i).getText(3)) == 0)
		cboCabeza.select(f);

compareTo > all

Gracias igualmente a todo el que lo leyó ahora mismo xd

freskito24

existe alguna forma de representar un caracter ascii en una coordenada con la consola de windows en c++?

Estoy buscando en studio h pero no encuentro nada

ej: Dibujar(coordenada x, coordenada y, "O" );

1 respuesta
dagavi

#47 Me suena que la conio.h tiene para hacer eso.

Me suena haber leído alguna función como gotoXY

1 respuesta
freskito24

#48 sí, era eso justamente lo que buscaba, gracias.

1 mes después
Idontknow

Buenas, estoy haciendo otro trabajo para la uni y estoy con esto.

Tengo que leer un archivo, echo por mi anteriormente, y aprovechar lo que leo para unas cosas.

No se porque pero me dice exactamente estos dos errores... (trabajo con Netbeans)

main.c:36: error: request for member f' in something not a structure or union
main.c:37: error: request for member
c' in something not a structure or union

Que no me direcciona a ini.f ni a ini.c. Tengo otro programa exactament con otro struct y a ese me va pero a este no... a ver si sera alguna , o . o algo por el estilo.

A ver si podéis verme el error.

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

//Estructura de dades
typedef struct//creo un nou tipus de variable//
{
    int f;//fila
    int c;//columna
}posicio;
//Declaració de funcions que usem



int main() {

posicio *ini;//posició inicial
int *n;// nº de columnes i files de l'array
int *movi;//nº de moviments
char *dire;//direcció
char *map[*n][*n];

FILE *d;
d=fopen("dades.txt","r");
fscanf(d,"%d\n%d %d\n%c\n%d",&*n,&ini.f,&ini.c,&*dire,&*movi);
fclose(d);

}
B

Intentas acceder a los miembros de una estructura con . cuando lo que tienes es un puntero a ella. Tendrías que utilizar el operador ->

Además, los punteros que tienes declarados no apuntan a ningún sitio, es raro que si cambias lo otro no te dé un fallo de segmentación al dereferenciar un puntero a un lugar indeterminado. Utiliza variables locales y pásaselas a fscanf con & o utiliza punteros, pasandolo como parámetros normales pero antes inicializalos a memoria dinamica reservada.

2 respuestas
Idontknow

#51 Gracias : )

Idontknow

Una pregunta, a ver si #51 me la puede resolver ; ).

He creado un typedef

typedef struct//creo un nou tipus de variable//
{
    int fi;//fila
    int col;//columna
    char color;//color
}posicio;

Y necesito crear una array con la estructura de el typedef, por lo tanto:

posicio *map [n][m];

Para imprimir, por ejemplo, el color de la posició [7][7] sería así?:

printf("%c",(*map[7][7]).color);

Mientras voy a buscar por internet.

1 respuesta
B

#53 si quieres tener la estructura con tamaño definido en tiempo de compilación sería:

posicio map[N][M];

Con N y M literales enteros, o porque hayas puesto el valor ahí o con defines.

Si quieres que el tamaño sea definido en tiempo de ejecución tendrías que usar malloc:

posicio* map = malloc(sizeof(posicio)*n*m);

De esa forma accederías a un vector de posicio directamente pero tendrías que llevar el control de fila y columna de forma externa ya que solo tienes una dimension para acceder y podrías utilizar map[ i ] o aritmética de punteros para ir accediendo al contenido.

Creo que nunca he trabajo con matrices de forma dinámica en C pero por si aun así quieres hacerlo con memoria dinámica y usar filas y columnas echale un ojo a esto.

http://stackoverflow.com/questions/3584705/defining-a-2d-array-with-malloc-and-modifying-it

1 respuesta
Idontknow

#54 Precisamente necesito que la array sea dinamica ya que un entero de los que leo en el archivo tiene que ser el numero de filas y columnas. Gracias.

9 meses después
Amazon

Con motivo de que hace 10 minutos estuve a punto de cortarme las venas y dejar este mundo hago un thread necromancy para recordaros de que este thread existe, por si queréis usarlo (perdón, pero no voy a postear ninguna duda, pues como dije, hace 10 minutos resolví mi duda).

Os animo a usarlo ;)