.dsy:it. Pages (17): « 1 2 3 4 [5] 6 7 8 9 » ... Last »
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Algoritmi e strutture dati (http://www.dsy.it/forum/forumdisplay.php?forumid=207)
-- [PROGETTO] "Mappe 2" (http://www.dsy.it/forum/showthread.php?threadid=23982)


Posted by MaurizioL on 09-02-2006 16:06:

Originally posted by Diuzza
typedef struct nodolista{
char spec;
struct nodolista* next;
}nodo

typedef struct lista{
nodo* inizio;
nodo* fine;
}lista

typedef struct mappa{
lista* specifica;
int x,y;
char * nome;
}
no?


Sì, per funzionare funziona, ma non vedo perchè usare due strutture per rappresentare un vettore di char.
Comunque se a te piace...

Secondo me faresti meglio a concentrarti su altri problemi (tipo come memorizzare le mappe in modo efficiente).

__________________
Maurizio Lombardi
Linux 2.6.14.2
-----------------------


Posted by Simeon on 09-02-2006 16:23:

Originally posted by Diuzza
Ho visto il codice di prima ma creo un array char nome[100] per magari inserire solo 4 caratteri.


Io ho fatto una realloc per ogni singolo carattere, forse ho esagerato :asd:, ma per stringhe corte va piu che bene.

Basta adattare i "salti" a seconda delle situazioni...

Edit : in effetti manco io capisco perche usare delle strutture per memorizzare le specifiche


Posted by MaurizioL on 09-02-2006 17:03:

Originally posted by Diuzza
Ho visto il codice di prima ma creo un array char nome[100] per magari inserire solo 4 caratteri.


Puoi mettere quanto vuoi, io ho messo 100 solo perchè avevo fatto qualche prova;
20 dovrebbero essere sufficienti.

__________________
Maurizio Lombardi
Linux 2.6.14.2
-----------------------


Posted by Simeon on 09-02-2006 17:17:

Ragazzi io userei un albero di ricerca binario anche per memorizzare le mappe... con tutte le operazioni di ricerca che vengono richieste mi pare adatto.

Ordinandole lessicograficamente per il nome.


Posted by ornati on 09-02-2006 17:42:

Originally posted by Diuzza
Mi chiedevo.
In crea il nome del file ha lunghezza che fisso io o può essere lungo quanto vuole. Perchè avrei dei problemini nella lettura del file. Nel senso che se non ho una lunghezza fissata non so che dimensione deve avere l'arrey che contiene la stringa


Il problema è sempre lo stesso (= a quello di memorizzare una specifica). La soluzione è:

1) usare un puntatore ad un'area di memoria allocata dinamicamente
2) usare malloc/realloc per allocare/espandere

Ecco un piccolo programma dimostrativo:

code:
#include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> char *read_token(FILE *f) { char *buf; int size = 16; int len = 0; int c; buf = malloc(size); while ((c=getc(f)) != EOF) { if (!isalnum(c)) { if (len == 0) continue; break; } if (len+1 >= size) { size <<= 1; /* size = size * 2 */ buf = realloc(buf, size); } buf[len++] = c; } buf[len++] = '\0'; buf = realloc(buf, len); return buf; } int main(void) { char *x; int run = 1; while (run) { x = read_token(stdin); printf("letto token <%s>\n", x); if (strcmp("end", x) == 0) run = 0; free(x); }; return 0; }


Posted by Diuzza on 09-02-2006 17:44:

Ho già risolto. Ma sarò gnucca ma ho un altro problema.

Possibile che quando cerco di accedere ad un file il mio sistema mi dice che si è verificato un errore, potrebbe esserci la perdita dei dati su cui sto lavorando... ?


Posted by ornati on 09-02-2006 17:52:

Originally posted by Diuzza
Ho già risolto. Ma sarò gnucca ma ho un altro problema.

Possibile che quando cerco di accedere ad un file il mio sistema mi dice che si è verificato un errore, potrebbe esserci la perdita dei dati su cui sto lavorando... ?


Strano... non mi è mai successa una cosa simile...
prova a postare il codice che ti dà problemi.


Posted by Ari_85 on 09-02-2006 17:57:

Se creiamo un albero per le mappe e un albero per i punti dovremo creare due alberi separati nel senso che dovremo scrivere due volte il codice perchè ad es la f inserisci del primo albero è diversa da quella del secondo perchè lavorano su nodi diversi..Certo, ci si guadagna in tempo di calcolo...
Ciao Lomba!

__________________
Good wombs hath borne bad sons


Posted by ornati on 09-02-2006 18:05:

Originally posted by Ari_85
Se creiamo un albero per le mappe e un albero per i punti dovremo creare due alberi separati nel senso che dovremo scrivere due volte il codice perchè ad es la f inserisci del primo albero è diversa da quella del secondo perchè lavorano su nodi diversi..Certo, ci si guadagna in tempo di calcolo...
Ciao Lomba!


Non è detto... guarda per esempio la mia Hash_Table, c'è una sola implementazione e viene usata per inserire cose diverse (perchè usa internamente puntatori "void*").

L'unico problema dei puntatori "void*" è che perdi il controllo sui tipi dato dal compilatore.


Posted by Diuzza on 09-02-2006 18:25:

ho un char* nome

faccio
int c;
FILE * valpunti;
valpunti=fopen(nome, "r");
fscanf(valpunti,"%d",&c);


magari ho fatto io qualche s....


Posted by ornati on 09-02-2006 19:05:

Originally posted by Diuzza
ho un char* nome

faccio
int c;
FILE * valpunti;
valpunti=fopen(nome, "r");
fscanf(valpunti,"%d",&c);


magari ho fatto io qualche s....


Sembra corretto.

Prova a mettere un controllo sulla "fopen":

code:
valpunti = fopen(nome, "r"); if (valpunti == NULL) { printf("Errore: impossibile aprire '%s'\n", nome); exit(1); }


Posted by Dav83 on 10-02-2006 00:15:

in alternativa si può usare la 'fread' che legge parte del file(indicato dai parametri)...http://www.cplusplus.com/ref/cstdio/fread.html

__________________
Ciao miao bau


Posted by Dav83 on 10-02-2006 00:15:

in alternativa si può usare la 'fread' che legge parte del file(indicato dai parametri)...http://www.cplusplus.com/ref/cstdio/fread.html

__________________
Ciao miao bau


Posted by ornati on 10-02-2006 07:23:

Originally posted by Dav83
in alternativa si può usare la 'fread' che legge parte del file(indicato dai parametri)...http://www.cplusplus.com/ref/cstdio/fread.html


In alternativa a cosa?


Posted by Diuzza on 10-02-2006 09:06:

No mi va fino alla fopen perchè ho messo un fprint dopo e stampa quindi lì' ci arriva..
non mi va la fscanf. moh


All times are GMT. The time now is 22:49. Pages (17): « 1 2 3 4 [5] 6 7 8 9 » ... Last »
Show all 246 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.