![]() |
Pages (2): [1] 2 » 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)
[PROGETTO] "Mappe 2"
Ci tenevo ad inaugurare il thread di discussione per questo progetto. Certo che il titolo è proprio originale 
beh quanto è differente da mappe1?
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
Originally posted by maynard80
beh quanto è differente da mappe1?
Originally posted by Simeon
Ho guardato di sfuggita il testo e mi pare identico
non ho la minima idea di quanto sia uguale, ma non credo proprio che il prof l'abbia fatto anche solo simile, altrimenti sai quanto ci si metteva a farsi passare il progetto da uno dell'appello scorso? :/
cmq ci penseremo domani, io e chi ha fatto lo scritto oggi: ci meritiamo un po' di riposo dopo la mazzata di stamattina ![]()
__________________
"Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul"
L'idea del piano, sequenze di punti, mappe.... è la stessa.
Cambia il fine ma sn convinto che parte del progetto di gennaio è tranquillamante riutilizzabile.
uhm...se è così gli darò un'occhiata ![]()
__________________
"Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul"
ciao a tutti,
ho letto il progetto ed ho fatto una prova per verificare l'esempio, ma non mi torna qualcosa......
nel file primo.txt ci sono le coordinate dei punti del piano (P0........Pn) ossia P(x,y) del primo punto fino all'ultimo...
il valore del punto viene calcolato con la formula del modulo nelle note 4
es :
c 4 4 primo.txt ho m x n = 16 punti da P0 ........... P15
per cui da v0......v 15
a=x mod m --> a=-1 mod 4 = 3
b=y mod n --> a= -3 mod 4 = 1
Val(-1,-3)=v(a+mb) = v6 che corrisponde a 5 corretto ??
ma quando verifico l'output con l non mi torna il valore 1
e con il sottopercorso non mi torna 13: e le coordinate !!
a voi torna qualcosa ??
-1 mod 4 fa -1. E' sbagliato l'esempio del prof sul modulo.
Il modulo puoi semplificarlo così:
x mod y :
X-(parteintera(x/y)*y)
nel tuo caso:
-1-(parteintera(-1/4)*4) = -1-(0*4)=-1
Se non credete provate anche con la calcolatrice.
Cmq l'ordine in cui sono messi i valori nel file è semplicemente nell'esempio del proff:
(0,0)(1,0)(2,0)(3,0)(1,0)(1,1)...
Sono praticamente in ordine se ho fatto bene i calcoli.
Cmq avete pensato a che strutture usare?
Originally posted by Diuzza
-1 mod 4 fa -1. E' sbagliato l'esempio del prof sul modulo.
Il modulo puoi semplificarlo così:
x mod y :
X-(parteintera(x/y)*y)
nel tuo caso:
-1-(parteintera(-1/4)*4) = -1-(0*4)=-1
Cmq io non so se è + o - uguale a quello passato perchè non l'ho guardato e ora mi sa che non c'è più il testo :-((
Passiensa
allora la mia calcolatrice è spastica?!? A mè da -40
Originally posted by Diuzza
Cmq io non so se è + o - uguale a quello passato perchè non l'ho guardato e ora mi sa che non c'è più il testo :-((
Passiensa
Originally posted by Diuzza
allora la mia calcolatrice è spastica?!? A mè da -40
io sapevo che il modulo era il resto della divisione...
es.
1) -340 mod 60 = -40
-340 / 60 fa -5 (senza contare eventuali decimali) -> -5*60 = -300 -> mancano -40
2) -1 mod 4 = -1
-1 / 4 fa 0 (senza contare eventuali decimali) -> 0*4 = 0 -> manca -1
3) -7 mod 4 = -3
-7 / 4 = -1 (senza contare eventuali decimali) -> -1*4 = -4 -> manca -3
mi pare fosse spiegato da qualche parte sul libro di dscreta...
__________________
"Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul"
Ragazzi io... non riesco a trovare una struttura dati adatta alla rappresentazione del piano. Suggerimenti? La matrice è da escludere come da testo...
Originally posted by Diuzza
-1 mod 4 fa -1. E' sbagliato l'esempio del prof sul modulo.
Il modulo puoi semplificarlo così:
x mod y :
X-(parteintera(x/y)*y)
nel tuo caso:
-1-(parteintera(-1/4)*4) = -1-(0*4)=-1
Originally posted by Simeon
Ragazzi io... non riesco a trovare una struttura dati adatta alla rappresentazione del piano. Suggerimenti? La matrice è da escludere come da testo...
Originally posted by darkAntAreS
io sapevo che il modulo era il resto della divisione...
es.
1) -340 mod 60 = -40
-340 / 60 fa -5 (senza contare eventuali decimali) -> -5*60 = -300 -> mancano -40
2) -1 mod 4 = -1
-1 / 4 fa 0 (senza contare eventuali decimali) -> 0*4 = 0 -> manca -1
3) -7 mod 4 = -3
-7 / 4 = -1 (senza contare eventuali decimali) -> -1*4 = -4 -> manca -3
mi pare fosse spiegato da qualche parte sul libro di dscreta...
Originally posted by ornati
Puoi usare una hash table che mappa (x,y) --> val:
http://www.dsy.it/forum/showthread....&threadid=24001
Oppure un albero di ricerca (meglio se bilanciato).
L'alternativa peggiore è usare una lista.
Con un albero bilanciato ottieni le migliori prestazioni asintotiche nel caso peggiore, mentre in pratica le hash table sono le + efficienti (caso atteso).
Originally posted by Simeon
Mi sa che andrò per l'albero di ricerca... boh ci penserò, grazie comunque.
Con le liste mi vengono in mente robe aberranti tipo "liste di liste", o forse un'unica lista che scorre tutti i punti da 0 a m*n...
Originally posted by ornati
Guarda che NON devi assolutamente memorizzare TUTTI i punti possibili ma SOLO i punti che vengono settati esplicitamente. Tutti gli altri hanno un valore predefinito... qundi se il punto che cerchi non è nella lista (albero, hash table ...) allora sai già quanto vale.
)
Confusione sul modulo...
Ecco una spiegazione alla faccenda del modulo:
http://en.wikipedia.org/wiki/Modulo_operation
Da notare questa parte:
"Some programming languages, such as ANSI C, don't define a result if either of n or a is negative. a modulo 0 is undefined in the majority of systems, although some do define it to be a."
Originally posted by Simeon
Ah allora stavo sbagliando, perche io pensavo di dover memorizzare tutte le coordinate da (1,1) a (m,n) e poi assegnare il valore di default a quelli che non erano settati esplicitamente...
Cioe, una 4x4 avrebbe costituito una lista di punti (1,1)... (4,4) ognuno con val(p) determinato (se preso dal file o settato successivamente tramite valore(x,y,z) ) o di default altrimenti.
Cercherò di ragionarci a fondo per comprendere anche queste banalità ( era piu bello il progetto di JAVA)
ciao,
scusate ma non ho capito bene utilizziamo l'esempio del prof:
c 4 4 primo.txt dove primo.txt --> -1 -3 2 -2 2 1 0 2 -2 3 2 -1 0 -2 1 -2
questi sono i valori dei punti da P0........P15 oppure le coordinate ?
oppure il valore dei punti si calcola come nella nota 3 ??
es della prima coppia -1 -3
Vla(x,y) = v(a+mb) ossia v vale da v0......v15 giusto ?
a= x mod m = A
b= y mod n = B
il valore del punto è ??
val(-1,-3)=v(A+4*B) ossia il valore corrispondente a ??
sono mooolto confuso
Originally posted by silver
ciao,
scusate ma non ho capito bene utilizziamo l'esempio del prof:
c 4 4 primo.txt dove primo.txt --> -1 -3 2 -2 2 1 0 2 -2 3 2 -1 0 -2 1 -2
questi sono i valori dei punti da P0........P15 oppure le coordinate ?
oppure il valore dei punti si calcola come nella nota 3 ??
es della prima coppia -1 -3
Vla(x,y) = v(a+mb) ossia v vale da v0......v15 giusto ?
a= x mod m = A
b= y mod n = B
il valore del punto è ??
val(-1,-3)=v(A+4*B) ossia il valore corrispondente a ??
sono mooolto confuso
Re: Confusione sul modulo...
Originally posted by ornati
Ecco una spiegazione alla faccenda del modulo:
http://en.wikipedia.org/wiki/Modulo_operation
Da notare questa parte:
"Some programming languages, such as ANSI C, don't define a result if either of n or a is negative. a modulo 0 is undefined in the majority of systems, although some do define it to be a."
code:
int modulo(int a, int b) { int x; if (a < 0) { x = -a + b - 1; a += x - x % b; return a; } return a % b; }
Meglio continuare qua....
Originally posted by MaurizioL
L'hash non serve a rappresentare un piano.
Dato che i punti che cambiano valore sono pochi puoi usare un albero per memorizzare quei punti il cui valore è stato cambiato.
Gli altri avranno un valore predefinito
Originally posted by Simeon
Meglio continuare qua....
Sto pensando di utilizzare un albero binario di ricerca con come chiavi le coordinate x e y e il valore come dato satellite... e' una buona idea? Non son sicuro se vada bene binario e nemmeno se utilizzare le coordinate come chiave...
E poi non ho capito questo: la funzione "valore (x,y,n)" va a porre a n il valore di un punto... questo punto si da per scontato che sia gia presente nel piano? Se non lo fosse andrebbe aggiunto all'interno dell'albero...
__________________
Maurizio Lombardi
Linux 2.6.14.2
-----------------------
Originally posted by MaurizioL
La funzione v x y n pone a n il valore del punto.
Quindi devi inserire nell'albero il punto il cui valore è stato modificato.
Io ho usato un albero binario di ricerca per memorizzare i punti, le coordinate le usavo come chiave, il valore è un dato satellite.
Se non trovi un punto nell'albero significa che ha un valore "predefinito" (quello che hai inserito usando il comando "c n".
Devi usare per forza le coordinate come chiave; (oltretutto un punto è determinato univocamente dalle sue coordinate.... quale migliore chiave è possibile????)
In effetti come chiave si devono usare le coordinate per forza...
Ricominciamo dal principio se non vi spiace
Ricevo con c m n nome i valori di ciascun punto del piano.
Ciascun punto lo metto in un albero di ricerca. Il primo punto andrà come radice, il secondo come figlio destro o sinistro a seconda della chiave data dalle sue coordinate così la ricerca avrà costo log n se n è il numero dei punti.
Ci sono?
Se poi devo modificare il valore di un punto lo ricerco attraverso l'albero.
M come fa a non essere dunque presente nel piano? Li ho inseriti tutti i punti con crea
Guarda che NON devi assolutamente memorizzare TUTTI i punti possibili ma SOLO i punti che vengono settati esplicitamente. Tutti gli altri hanno un valore predefinito... qundi se il punto che cerchi non è nella lista (albero, hash table ...) allora sai già quanto vale.
code:
struct Mappa{ char *nome; Punto origine; char *specifica; } //Punto lo definirei così piu o meno struct Punto{ int x; int y; int val; }

Originally posted by Diuzza
Ricominciamo dal principio se non vi spiace
Ricevo con c m n nome i valori di ciascun punto del piano.
Ciascun punto lo metto in un albero di ricerca. Il primo punto andrà come radice, il secondo come figlio destro o sinistro a seconda della chiave data dalle sue coordinate così la ricerca avrà costo log n se n è il numero dei punti.
Ci sono?
Se poi devo modificare il valore di un punto lo ricerco attraverso l'albero.
M come fa a non essere dunque presente nel piano? Li ho inseriti tutti i punti con crea
(sto diventando insicuro persino ad inizializzare le variabili)
Originally posted by tyzer
Domanda per Ornati: nel progetto Mappe2 si dice che con la funzione crea(m,n,nome) bisogna assegnare ad ogni punto del piano i valori come prescritto nella nota 3. Non capisco allora quello che avevi detto prima...i punti devo memorizzarli per forza...
Il Piano lo si deve rappresentare con un albero di ricerca binaria?
Oppure un albero red-black? (che è assai più incasinato credo...)
Altra domanda: le mappe in che struttura si mettono? Cioè mi spiego, una mappa la implementerei così:
code:
struct Mappa{ char *nome; Punto origine; char *specifica; } //Punto lo definirei così piu o meno struct Punto{ int x; int y; int val; }

Originally posted by ornati
PS: sto seramente pensando di implementare Mappe2 e venderlo al miglior offerente![]()

Io cmq avevo capito che il piano era di dimensione m*n non infinito... mah adesso lo riguardo
Originally posted by Diuzza
Io cmq avevo capito che il piano era di dimensione m*n non infinito... mah adesso lo riguardo
Qualcuno mi sa dire come memorizzare una stringa di lunghezza arbitraria (ad esempio la specifica) senza usare un vettori di char di dimensioni esagerate.
Originally posted by Nosferatu
Qualcuno mi sa dire come memorizzare una stringa di lunghezza arbitraria (ad esempio la specifica) senza usare un vettori di char di dimensioni esagerate.
__________________
Maurizio Lombardi
Linux 2.6.14.2
-----------------------
Per la specifica io pensavo di usare semplicemente una lista perchè non devi ricercare una lettera o cose simili, devi semplicemente scorrerla, quindi che problema c'è? Ci impiegheresti o(n) cmq perchè devi leggere ogni singolo carattere
Originally posted by ornati
In effetti ho fatto un po' di confusione... parlavo del nuovo progetto pensando a quella vecchio
Cmq adesso ho letto meglio il testo e il piano è sempre "infinito".
Per quanto riguarda i valori dei punti, la relazione:
"Se a = x mod m e b = y mod n allora V al(x, y) = v[a+mb] ."
ti dice il valore di ogni punto del piano a meno che non sia stato "sovrascritto" da un comando "valore (x,y,val)".
Quindi il tutto si può implementare così:
1) i valori dei punti settati esplicitamente (con "v x y val") sono memorizzati in una apposita struttura (albero, albero bilanciato, hash table, lista... quello che preferite)
2) se serve il valore di un punto che non è stato settato esplicitamente, e quindi non si trova nella struttura, lo si ricava mediante la relazione di prima.
Ovvero:
valore = ArrayValori[ modulo(x,M) + M * modulo(y, N) ];
Facile, no?
Originally posted by Diuzza
Per la specifica io pensavo di usare semplicemente una lista perchè non devi ricercare una lettera o cose simili, devi semplicemente scorrerla, quindi che problema c'è? Ci impiegheresti o(n) cmq perchè devi leggere ogni singolo carattere
__________________
Maurizio Lombardi
Linux 2.6.14.2
-----------------------
Originally posted by Diuzza
Io pensavo di implementarlo così.
I valori li metto in un albero rb. (non i punti, badate, ma i valori)
Dopodichè quando mi passa le coordinate di un punto e mi serve il suo valore mi faccio il calcolino e lo cerco nell'albero.
In caso si ripresentassero più volte gli stessi punti e non voglio ricercare il valore nell'albero si potrebbero mettere in un hash table. Quindi, se mi viene dato un punto di cui voglio sapere il valore, prima guardo se è presente nell'hash table, se non c'è cerco nell'albero rb.
Potrebbe funzionare?
code:
int *ArrayValory = malloc(sizeof(int) * M * N); for (i=0; i < M*N; i++) { fscanf(file_input, "%d", &ArrayValori[i]); }
code:
valore = ArrayValori[ modulo(x,M) + M * modulo(y, N) ];
Grazie dell'info MaurizioL
Ragazzi, sto andando nel pallone piu completo, naturalmente parlo della nota 3.
Voglio dire, io apro il mio file primo.txt e ho la mia bella lista di valori "-1 -3 2 -2 2 1 0 2 -2 3 2 -1 0 -2 1 -2"
E dico : a = x mod m e b = y mod n. Val (x,y) = v[a+mb]... Non riesco a capire quali valori dare a (x,y), forse tutti i punti da (0,0) a (m,n) ?
Se qualcuno fa un esempio pratico lo ringrazio dal profondo del cuore.
Nel "secondo.txt" per esempio c'e' un solo valore: -1. Quindi abbiamo un solo punto. Nella mia testa io porrei x,y=(1,1), che sarebbe l'unico punto possibile. Quindi uno fa a = 1 mod -1 e b = 1 mod -1, e il valore si trova a v[a+mb] cioe v[0]. Quindi val(1,1) = -1.
Originally posted by MaurizioL
C'è una funzione apposta chiamata realloc;
if usi linux:
man realloc (per leggere la guida)
else if usi windows{
cerca su internet || scarica il progetto di ornati e guarda lì
}
else{
Usa il mio codice:
char* get_string(char end){
char input;
int len=0;
int mem=100;
char *string=(char*)malloc(mem*sizeof(char));
while((input=getchar())!=end){
if(len>mem-1){
mem*=2;
string=(char*)realloc(string,mem);
}
string[len++]=input;
}
string[len]=0x0;
return string;
}
}
Originally posted by Polsy
quanto sei nerd![]()
__________________
Maurizio Lombardi
Linux 2.6.14.2
-----------------------
Una cosa ma il carattere end che gli passi come parametro, che carattere è
Che poi scusate, quando si memorizzano i punti (coordinate, valori) nella nostra struttura, mi sembra abbia piu senso ordinarli per valore... Per fare poi le varie operazioni per ricavare i sottopercorsi migliori...
Ce la faccio piu.
Originally posted by Nosferatu
Una cosa ma il carattere end che gli passi come parametro, che carattere è
__________________
Maurizio Lombardi
Linux 2.6.14.2
-----------------------
Originally posted by MaurizioL
Io nerd?
Leggi i sorgenti di Ornati e poi mi dici
http://www.dsy.it/forum/showthread....&threadid=24001
![]()
Originally posted by ornati
No, no... io non programmo mai a basso livello:
http://ornati.altervista.org/
![]()
A uso e consumo di tutti, riguardo la nota 3, ecco cosa mi ha risposto il prof Fiorentini:
_______________
La regola le serve per determinare il valore di un generico punto (X,Y).
Esempio:
Se m=3 e n=2 e il file contiene i valori
0 1 2 3 4 5
allora:
Val(0,0) = Val(3,0) = Val(6,0) = Val(-3,0) = Val(-6,0) = ..... = 0
Val(1,0) = Val(4,0) = Val(7,0) = Val(-2,0) = Val(-5,0) = ..... = 1
Val(0,1) = Val(3,1) = Val(5,1) = Val(-3,1) = Val(-6,1) = ..... = 3
E' come se ricoprisse il piano con tanti rettangoli adiacenti
della forma
3 4 5
0 1 2
ottenendo
...............
..3 4 5 3 4 5..
..0 1 2 0 1 2..
..3 4 5 3 4 5..
..0 1 2 0 1 2..
...............
Originally posted by Polsy
si ma quanto te la meni![]()

Originally posted by Simeon
_______________
E' come se ricoprisse il piano con tanti rettangoli adiacenti
della forma
............... [/B]
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
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
__________________
Maurizio Lombardi
Linux 2.6.14.2
-----------------------
Originally posted by MaurizioL
Se tu rappresenti la specifica con una lista ogni nuovo carattere deve essere inserito in coda....
Quindi o ci impieghi O(n^2) per compiere O(n) operazioni di inserimento oppure utilizzi una variabile globale che punta alla fine della lista, ma le variabili globali non sono consentite!
Ho visto il codice di prima ma creo un array char nome[100] per magari inserire solo 4 caratteri.
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?
__________________
Maurizio Lombardi
Linux 2.6.14.2
-----------------------
Originally posted by Diuzza
Ho visto il codice di prima ma creo un array char nome[100] per magari inserire solo 4 caratteri.
, ma per stringhe corte va piu che bene.
Originally posted by Diuzza
Ho visto il codice di prima ma creo un array char nome[100] per magari inserire solo 4 caratteri.
__________________
Maurizio Lombardi
Linux 2.6.14.2
-----------------------
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.
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
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; }
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... ?
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... ?
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
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!
ho un char* nome
faccio
int c;
FILE * valpunti;
valpunti=fopen(nome, "r");
fscanf(valpunti,"%d",&c);
magari ho fatto io qualche s....
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....
code:
valpunti = fopen(nome, "r"); if (valpunti == NULL) { printf("Errore: impossibile aprire '%s'\n", nome); exit(1); }
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
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
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
No mi va fino alla fopen perchè ho messo un fprint dopo e stampa quindi lì' ci arriva..
non mi va la fscanf. moh
il fatto è che la fopen mi sembra che vada anche se il file che gli passo come parametro non esiste. Non è che nn mi trova il file anche se il nome è corretto. Il file l'ho messo nella stessa directory del programmino che ho fatto, giusto?
Originally posted by Diuzza
il fatto è che la fopen mi sembra che vada anche se il file che gli passo come parametro non esiste. Non è che nn mi trova il file anche se il nome è corretto. Il file l'ho messo nella stessa directory del programmino che ho fatto, giusto?
Originally posted by Diuzza
il fatto è che la fopen mi sembra che vada anche se il file che gli passo come parametro non esiste. Non è che nn mi trova il file anche se il nome è corretto. Il file l'ho messo nella stessa directory del programmino che ho fatto, giusto?
code:
#include <assert.h> ... file = fopen(nome ,"r"); assert (file != NULL);
Originally posted by Diuzza
il fatto è che la fopen mi sembra che vada anche se il file che gli passo come parametro non esiste. Non è che nn mi trova il file anche se il nome è corretto. Il file l'ho messo nella stessa directory del programmino che ho fatto, giusto?
Ok, per quanto mi riguarda sono a posto con tutte le operazioni che riguardano le mappe (inserimento eliminazione ricerca blablabla), almeno concettualmente dato che il codice lo devo ancora scrivere.
Stavo pensando alla funzione per calcolare il percorso ottimale... ma bisogna analizzare TUTTE le possibili permutazioni di lunghezza minima da (x,y) a (w,z)? Mi sembra parecchio strano ed inefficiente. Sto ancora cercando di capire come ragionare, forse alla fine si puo' risolvere il tutto utilizzando i grafi.
Boh se qualcuno ci sta pensando dica la sua 
EDIT : mmm forse bisogna partire dal fondo...
EDIT2 : programmazione dinamica ? 
qualcuno che ci capisce qualcosa di questo progetto?
dunque allora sono contento che la nota 3 sia ormai chiara (il file contiene semplicemente nxm dati utilizzati per riempire il piano), i punti del piano esistono chiaramente solo nella nostra testa e si concreatizzano solo se fanno parte di una (o più) mappe, se poi cambiamo valore ad un punto agiamo manualmente sul dato che esplica il valore del punto che precedentemente era stato calcolato automaticamente tramite la formulina della nota 3.
ora ci troviamo quindi con delle mappe che hanno un nome, un punto di partenza e un percorso definito dalla specifica, le mappe sono selezionate tramite il nome quindi definire una struttura unica per contenere tutti i punti è una cacchiata, meglio una struttura come insieme di mappe, e ogni mappa una struttura contenente tutti i punti della specifica.. ora è meglio creare tutti i punti di ogni mappa oppure mantenere semplicemente il punto di partenza e lavorare con le specifiche? in teoria ogni mappa è un grafo che può contenere cicli e dove ogni punto può prendere 4 direzioni, ottimizzarlo vuol dire prima di tutto eliminare i cicli, quindi quale struttura può fare al caso nostro?
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
Originally posted by maynard80
... quindi quale struttura può fare al caso nostro?
Scusate: ma qualcuno mi può spiegare come si riece ad associare ad un punto un Val negativo se: Val(x,y)=V(a+mb) ed i resti di a e b (come da definizione) non sono mai negativi?...qualcosa non torna!
Originally posted by am445733
Scusate: ma qualcuno mi può spiegare come si riece ad associare ad un punto un Val negativo se: Val(x,y)=V(a+mb) ed i resti di a e b (come da definizione) non sono mai negativi?...qualcosa non torna!
Originally posted by ornati
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.
__________________
Good wombs hath borne bad sons
[QUOTE]Originally posted by Simeon
Stavo pensando alla funzione per calcolare il percorso ottimale... ma bisogna analizzare TUTTE le possibili permutazioni di lunghezza minima da (x,y) a (w,z)? Mi sembra parecchio strano ed inefficiente. Sto ancora cercando di capire come ragionare, forse alla fine si puo' risolvere il tutto utilizzando i grafi.
QUOTE]
...stavo pensando a Dijkstra per il cammino minimo con pesi per i valori dei punti....idea allo stato embrionale...da approfondire nel w-e
E' stato visto a lezione?
Originally posted by Ari_85
Già ma metti che creo una funzione che cerca un nodo all'interno di un albero. Per farlo dovrei accedere anche ai campi della struttura di cui sono composti i nodi. Se perdo il controllo sui tipi di dato posso fare ad es. ele->nome dove ele è il puntatore void a cui è stato associato un nodo? o forse dovrei vedere come la strutture viene fisicamente memorizzata e aggiungere al puntatore tot byte? In questo modo potrei risolvere il problema dei campi
code:
struct mia_struttura *m = ele; m->nome = ...
Originally posted by marcomaria
...stavo pensando a Dijkstra per il cammino minimo con pesi per i valori dei punti....idea allo stato embrionale...da approfondire nel w-e
E' stato visto a lezione?
scusate la domanda idiota, ma se dichiaro un array extern inizializzato come
int = array[] il compilatore mi segnala "array assumed to have one element"
cioè è come se lo inizializzassi con un solo valore in questo modo?? (calcolate poi in un'altra funzione il valore viene modificato )
perchè non vorrei ke poi mi desse qualche errore successivamente,
ovviamente come variabile esterna non posso ankora fornigli un valore xkè questo mi deriva da un'altra funzione..
lo sclero da progettino sta prendendo il sopravvento..
lfn ![]()
__________________
an arrow from the sun
Secondo me dei cicli te ne fotti (se no il nostro progetto include anche quello di gennaio?!?!?), data una mappa e la relativa specifica devi ricavare due cose: origine e destinazione. Questo è ciò che ti basta per calcolarti la riduzione.
Per quanto riguarda i grafi, tra src e dst si potrebbe costruire un grafo e poi utilizzare un algoritmo per trovare i cammini minimi, ma a questo punto sorge un problema: nel progetto sono i PUNTI che hanno un valore, non gli ARCHI. Soluzione: ad es. valore[arco(u,v)] = valore[punto(v)]. Altro problema: ATTENZIONE, l'algoritmo di Dijkstra non è utilizzabile in quanto calcola il cammino minimo in un grafo nel caso in cui tutti i pesi degli archi siano positivi. Nel progetto (secondo la notazione di prima) un arco può avere valori negativi. Soluzione: sul Cormen due pagine dopo Dijkstra c'è l'algoritmo di Bellman-Ford che fa al caso nostro, ma cavolo, tra pseudocodice e C ci passa un mare!!!!
Cmq se volete qualche implementazione dei grafi guardatevi l'ultima lezione di Aguzzoli, proprio le ultime slide, altrimenti provate su http://www.algoteam.dsi.unimi.it/
Originally posted by maynard80
dunque allora sono contento che la nota 3 sia ormai chiara (il file contiene semplicemente nxm dati utilizzati per riempire il piano), i punti del piano esistono chiaramente solo nella nostra testa e si concreatizzano solo se fanno parte di una (o più) mappe, se poi cambiamo valore ad un punto agiamo manualmente sul dato che esplica il valore del punto che precedentemente era stato calcolato automaticamente tramite la formulina della nota 3.
ora ci troviamo quindi con delle mappe che hanno un nome, un punto di partenza e un percorso definito dalla specifica, le mappe sono selezionate tramite il nome quindi definire una struttura unica per contenere tutti i punti è una cacchiata, meglio una struttura come insieme di mappe, e ogni mappa una struttura contenente tutti i punti della specifica.. ora è meglio creare tutti i punti di ogni mappa oppure mantenere semplicemente il punto di partenza e lavorare con le specifiche? in teoria ogni mappa è un grafo che può contenere cicli e dove ogni punto può prendere 4 direzioni, ottimizzarlo vuol dire prima di tutto eliminare i cicli, quindi quale struttura può fare al caso nostro?
niente lasciate stare ho risolto, non fate caso a quello che ho scritto T_T sono proprio fusa
lfn ![]()
__________________
an arrow from the sun
Originally posted by YoMo
[B]Secondo me dei cicli te ne fotti (se no il nostro progetto include anche quello di gennaio?!?!?), data una mappa e la relativa specifica devi ricavare due cose: origine e destinazione. Questo è ciò che ti basta per calcolarti la riduzione.
Per quanto riguarda i grafi, tra src e dst si potrebbe costruire un grafo e poi utilizzare un algoritmo per trovare i cammini minimi, ma a questo punto sorge un problema: nel progetto sono i PUNTI che hanno un valore, non gli ARCHI. Soluzione: ad es. valore[arco(u,v)] = valore[punto(v)].
Sarà una stupidata ma io non riesco proprio a permettere la lettura sulla stessa linea di interi e di stringhe, come ad esempio nel comando m qualcuno può aiutarmi?
Chissà come mai oggi ho riprovato a leggere il file s funzia.... mah
prima fai un getchat e leggi il carattere che identificherebbe l'istruzione. Poi usi uno switch per riconoscere l'istruzione ed eseguire le relative operazioni. Dopodichè (in caso di c), gai un fscanf per leggere i valori o quel che sono.
E' questo che intendevi? o ho capito male?
Originally posted by Nosferatu
Sarà una stupidata ma io non riesco proprio a permettere la lettura sulla stessa linea di interi e di stringhe, come ad esempio nel comando m qualcuno può aiutarmi?
I miei problemi sono nel caso del comando m, quando devi permettere prima di inserire una stringa di lunghezza arbitraria, poi 2 interi e poi ancora una stringa
Originally posted by Nosferatu
I miei problemi sono nel caso del comando m, quando devi permettere prima di inserire una stringa di lunghezza arbitraria, poi 2 interi e poi ancora una stringa
allora io ho 2 quesiti:
1)Per il discorso dei valori alla fine come calcoliamo il modulo? nel senso che 7mod2 fa 1 e su questo non ci sono problemi, ma -7mod2 dovrebbe fare -7 ma nel nostro caso a quanto pare non possiamo avere risultati della funzione modulo negativi (chiaro visto che il risultato stesso è l'indice per trovare il valore nel file), ecco voi coe operate??
2)stavo pensando che alla fine ogni mappa potrebbe essere una piccola lista di adiacenze, e ad essa applicare gli algoritmi per gli shortest path, no? unica cosa come si fa a modificare Dijkstra per il caso dei pesi negativi?
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
Originally posted by maynard80
allora io ho 2 quesiti:
1)Per il discorso dei valori alla fine come calcoliamo il modulo? nel senso che 7mod2 fa 1 e su questo non ci sono problemi, ma -7mod2 dovrebbe fare -7 ma nel nostro caso a quanto pare non possiamo avere risultati della funzione modulo negativi (chiaro visto che il risultato stesso è l'indice per trovare il valore nel file), ecco voi coe operate??
code:
int modulo(int a, int b) { int x; if (a < 0) { x = -a + b - 1; a += x - x % b; return a; } return a % b; }
Originally posted by maynard80
2)stavo pensando che alla fine ogni mappa potrebbe essere una piccola lista di adiacenze, e ad essa applicare gli algoritmi per gli shortest path, no? unica cosa come si fa a modificare Dijkstra per il caso dei pesi negativi?
Non credo che ci sia bisogno di scomodare i grafi.
Per la riduzione, usando la programmazione dinamica, si può fare in tempo O(dx * dy). Dove dx = |src.x - dst.x| e dy = |src.y - dst.y|.
Non penso che si possa fare di meglio... nel caso generico. Poi magari si può velocizzare nel caso medio con qualche euristica, boh!



Avanzo un problema che magari per voi sarà scemo ma mi sta mandando in confusione.
Voi QUANDO invocate la funzione che calcola il valore totale di una mappa?
Nell'esempio del prof lui inizia con
c 4 4 primo.txt
m mappa1 4 3 blablabla
s mappa1
...
E stampando mappa1 viene visualizzato:
...
mappa1 4 7 1 EEESSSEENWWWWWWWSSEENNNWSSSSSWW
...
Il valore di mappa1 con quella specifica e' "1", quindi in quelle 3 istruzioni la in alto è gia stato calcolato.
Allora ho pensato :"bene, invoco la funzione di calcolo del valore della mappa quando la inserisco con m mappa1 etc...".
Poi sono andato avanti a leggere l'esempio e ho trovato sto passaggio:
...
s alfa
v -3 3 100
s alfa
...
Che in output produce
...
alfa -6 3 11 NEEEN
alfa -6 3 94 EEENN
...
E questo mi manda in crisi. Quello che facciamo noi tra le due stampe è soltanto inserire un nuovo valore. Com'è possibile che la seconda stampa abbia gia a disposizione il valore nuovo della mappa alfa? E la specifica "NEEEN" cambia in "EEENN"... ma perchè?!?!
Boh se qualcuno riesce a capire qualcosa del mio problema e mi da una risposta lo ringrazio tantissimo, può darsi che mi sfugga qualcosa di molto molto importante.

p.s Polsy ma la rappresentazione con la matrice non è inefficiente? Almeno a quanto dice il progetto si...
Originally posted by Simeon
...
Poi sono andato avanti a leggere l'esempio e ho trovato sto passaggio:
...
s alfa
v -3 3 100
s alfa
...
Che in output produce
...
alfa -6 3 11 NEEEN
alfa -6 3 94 EEENN
...
E questo mi manda in crisi. Quello che facciamo noi tra le due stampe è soltanto inserire un nuovo valore. Com'è possibile che la seconda stampa abbia gia a disposizione il valore nuovo della mappa alfa? E la specifica "NEEEN" cambia in "EEENN"... ma perchè?!?!
...
Originally posted by YoMo
Se l'esempio dice che
r alfa
s alfa
v -3 3 100
s alfa
sputa fuori
alfa -6 3 11 NEEEN
alfa -6 3 94 EEENN
può significare solo una cosa: se riduco una mappa VOGLIO che quella mappa sia SEMPRE ridotta, qualsiasi cosa succeda (es. modifico il valore di un punto).
Ciò mi fa venire i brividi....

Originally posted by Simeon
Avanzo un problema che magari per voi sarà scemo ma mi sta mandando in confusione.
Voi QUANDO invocate la funzione che calcola il valore totale di una mappa?
Nell'esempio del prof lui inizia con
c 4 4 primo.txt
m mappa1 4 3 blablabla
s mappa1
...
E stampando mappa1 viene visualizzato:
...
mappa1 4 7 1 EEESSSEENWWWWWWWSSEENNNWSSSSSWW
...
Il valore di mappa1 con quella specifica e' "1", quindi in quelle 3 istruzioni la in alto è gia stato calcolato.
Allora ho pensato :"bene, invoco la funzione di calcolo del valore della mappa quando la inserisco con m mappa1 etc...".
Poi sono andato avanti a leggere l'esempio e ho trovato sto passaggio:
...
s alfa
v -3 3 100
s alfa
...
Che in output produce
...
alfa -6 3 11 NEEEN
alfa -6 3 94 EEENN
...
E questo mi manda in crisi. Quello che facciamo noi tra le due stampe è soltanto inserire un nuovo valore. Com'è possibile che la seconda stampa abbia gia a disposizione il valore nuovo della mappa alfa? E la specifica "NEEEN" cambia in "EEENN"... ma perchè?!?!
Boh se qualcuno riesce a capire qualcosa del mio problema e mi da una risposta lo ringrazio tantissimo, può darsi che mi sfugga qualcosa di molto molto importante.
p.s Polsy ma la rappresentazione con la matrice non è inefficiente? Almeno a quanto dice il progetto si...
Originally posted by Polsy
mumble...
i casi sono 2, o il prof ha sbagliato e si è dimenticato una riduzione nel mezzo, o ha ragione yomo e le mappe vanno ridotte automaticamente...in tal caso non fai altro che richiamare riduci quando vuoi stampare una mappa (le riduci solo quando le vuoi stampare, se no sarebbe inefficientissimo) ma mi sembra strano...l'avrebbe scritto nelle specifiche...provate a mandargli una mail
edit: tra le altre cose, se riduci fosse implicita, a che pro richiamare r alfa prima di s alfa?
, non può pensarci uno di voi?
la rappresentazione del piano tramite una matrice è di sicuro inefficiente, dato che il piano è infinito
le matrici che dico io riguardano solo la porzione di piano compresa tra l'inizio e la fine della mappa da ridurre
Polsy (cioè Paola vero?
), ho provato a seguire il tuo suggerimento, per fare la funzione riduci usando Dijkstra modificandolo perchè trovi il valore massimo , il fatto è che non funziona lo stesso...
anche tenendo conto dei soli spostamenti possibili e che cerco il cammino massimo quindi non va in loop su cicli negativi.
Il problema è che se i valori dei punti fossero tutti positivi allora l'algoritmo greedy insegue quelli piu grossi (cioè ogni volta che devo scegliere il prossimo punto scelgo quello piu grosso spostandomi nelle due uniche direzioni possibili per avvicinarmi al punto destinazione) e arrivo a determinare la soluzione ottimale...
Invece essendo presenti valori negativi, l'algoritmo può inseguire lo stesso i valori più grossi, ma magari poi trova dei valori negativi (nei punti successivi...) e la soluzione non è ottima perchè ci potrebbe essere il caso che scegliendo un percorso in cui ci sono punti negativi, poi magarai ce ne sono altri positivi che mi danno un percorso di valore maggiore che se nn avessi inseguito quelli di valore maggiore...
Non so se sono stato chiaro, in pratica credo che la struttura su cui applichiamo questo algoritmo non sia un matroide e quindi gli algoritmi greedy (compreso il caro Dijkstra...) non vanno...
Originally posted by tyzer
Polsy (cioè Paola vero?), ho provato a seguire il tuo suggerimento, per fare la funzione riduci usando Dijkstra modificandolo perchè trovi il valore massimo , il fatto è che non funziona lo stesso...
anche tenendo conto dei soli spostamenti possibili e che cerco il cammino massimo quindi non va in loop su cicli negativi.
Il problema è che se i valori dei punti fossero tutti positivi allora l'algoritmo greedy insegue quelli piu grossi (cioè ogni volta che devo scegliere il prossimo punto scelgo quello piu grosso spostandomi nelle due uniche direzioni possibili per avvicinarmi al punto destinazione) e arrivo a determinare la soluzione ottimale...
Invece essendo presenti valori negativi, l'algoritmo può inseguire lo stesso i valori più grossi, ma magari poi trova dei valori negativi (nei punti successivi...) e la soluzione non è ottima perchè ci potrebbe essere il caso che scegliendo un percorso in cui ci sono punti negativi, poi magarai ce ne sono altri positivi che mi danno un percorso di valore maggiore che se nn avessi inseguito quelli di valore maggiore...
Non so se sono stato chiaro, in pratica credo che la struttura su cui applichiamo questo algoritmo non sia un matroide e quindi gli algoritmi greedy (compreso il caro Dijkstra...) non vanno...
ti conosco?
domanda stupida: e se trovo 2 percorsi ottimali con la riduzione? sulla descrizione del progetto dice che la riduzione di una mappa è la mappa stessa con un percorso ridotto, ma quell' "un" è articolo indeterminativo o effettivamente se ci sono più percorsi ottimali ne scelgo uno a caso???
__________________
"Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul"
Originally posted by darkAntAreS
domanda stupida: e se trovo 2 percorsi ottimali con la riduzione? sulla descrizione del progetto dice che la riduzione di una mappa è la mappa stessa con un percorso ridotto, ma quell' "un" è articolo indeterminativo o effettivamente se ci sono più percorsi ottimali ne scelgo uno a caso???
Ok ragazzi, sul sito di laboratorio c'è l'errata corrige del problema di ieri, ci voleva una riduzione prima della seconda stampa 
Per quanto riguarda i valori settati esplicitamente, il prof ha detto che alla creazione di un nuovo piano devono essere svuotati.
mi sto accingendo a realizzare il progetto e pensavo alla rappresentazione del piano. se uso un albero binario di ricerca e (x,y) rappresenta la chiave l'albero non è sbilanciato?
il fatto è che tu calcoli per ogni punto del rettangolo compreso tra la sorgente e la destinazione qual'è il cammino migliore dalla sorgente e in esso memorizzi il valore dell'intero cammino che ti porta fin lì
il cammino te lo trovi riguardando a ritroso i punti della seconda matrice, tempo di calcolo O(n*m) considerando una matrice nxm
Originally posted by tyzer
Ho capito ciò che dici, ma secondo me ci sono dei problemi:
1) Come fai fare quello che ti ho quotato sopra? Per migliore intendi con peso massimo spero...
) e $valore_cella_00 = $valore_punto_00
2) Anche ammettendo che si riesca a trovare per ogni punto (i,j) nel rettangolo il valore del cammino di peso massimo...potrebbe succedere che poi procedendo a ritroso dalla seconda matrice
trovi che i punti (i-1,j) ed (i,j-1) hanno come valore del cammino migliore per raggiungerli lo stesso costo ed allora quale dei due scegli? Non puoi sceglierne uno a caso fra i 2 perchè non saprai mai se magari sceglievi quello che decidi scartare quali altri costi incontravi e che non incontrerai scegliendo l'altro punto...
P.S.
Di vista forse mi conosci, ero a fare metodi col Mereghet l'anno scorso...eravamo io e un mio amico tutti e due del primo anno...
ho appena iniziato sto progetto ed ho gia un dubbio..
per associare ad ogni punto val basta seguire la nota 3 e fin qua ci sono.. ma x e y dove li prendo? sono semplicemente fatti scorrere partendo dai parametri m e n?
nel caso di c 4 4 primo.txt abbiamo 16 punti e primo.txt contiene 16 valori.. quindi ogni punto avrà un valore.. io facendo 2 calcoli mi è venuto fuori cosi:
(1,1) -> v5
(1,2) -> v9
(1,3) -> v13
(1,4) -> v1
(2,1) -> v6
(2,2) -> v10
(2,3) -> v14
(2,4) -> v2
(3,1) -> v7
(3,2) -> v11
(3,3) -> v15
(3,4) -> v3
(4,1) -> v4
(4,2) -> v8
(4,3) -> v12
(4,4) -> v0
è corretto?
Originally posted by miles
mi sto accingendo a realizzare il progetto e pensavo alla rappresentazione del piano. se uso un albero binario di ricerca e (x,y) rappresenta la chiave l'albero non è sbilanciato?
__________________
Maurizio Lombardi
Linux 2.6.14.2
-----------------------
Originally posted by tandrea85
ho appena iniziato sto progetto ed ho gia un dubbio..
per associare ad ogni punto val basta seguire la nota 3 e fin qua ci sono.. ma x e y dove li prendo? sono semplicemente fatti scorrere partendo dai parametri m e n?
nel caso di c 4 4 primo.txt abbiamo 16 punti e primo.txt contiene 16 valori.. quindi ogni punto avrà un valore.. io facendo 2 calcoli mi è venuto fuori cosi:
(1,1) -> v5
(1,2) -> v9
(1,3) -> v13
(1,4) -> v1
(2,1) -> v6
(2,2) -> v10
(2,3) -> v14
(2,4) -> v2
(3,1) -> v7
(3,2) -> v11
(3,3) -> v15
(3,4) -> v3
(4,1) -> v4
(4,2) -> v8
(4,3) -> v12
(4,4) -> v0
è corretto?
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
Originally posted by tandrea85
ho appena iniziato sto progetto ed ho gia un dubbio..
per associare ad ogni punto val basta seguire la nota 3 e fin qua ci sono.. ma x e y dove li prendo? sono semplicemente fatti scorrere partendo dai parametri m e n?
nel caso di c 4 4 primo.txt abbiamo 16 punti e primo.txt contiene 16 valori.. quindi ogni punto avrà un valore.. io facendo 2 calcoli mi è venuto fuori cosi:
(1,1) -> v5
(1,2) -> v9
(1,3) -> v13
(1,4) -> v1
(2,1) -> v6
(2,2) -> v10
(2,3) -> v14
(2,4) -> v2
(3,1) -> v7
(3,2) -> v11
(3,3) -> v15
(3,4) -> v3
(4,1) -> v4
(4,2) -> v8
(4,3) -> v12
(4,4) -> v0
è corretto?
Originally posted by Simeon
Se ti leggi una delle pagine iniziali di questo thread trovi la spiegazione del prof sulla nota 3![]()
Originally posted by tandrea85
ok grazie.. ho piu o meno capito.. quindi piano infinito, valori dei generci punti del piano ricavati o tramite v0, v1.. dal file, o tramite valore(s,y,n) o 0 altrimenti.
mettiamo ke io voglia scegliere l'albero binario di ricerca per il piano.. ma se è infinito cosa ci salvo dentro? quali punti?
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
Originally posted by maynard80
solo i punti che ti interessano
Originally posted by tandrea85
quelli del percorso? se mi fai un esempietto te ne sarei grato..
piu che altro vorrei capire concettualmente la cosa..
quello che ho capito fin ora è (ed è ben poco):
- ho un piano infinito composto da punti
- ogni punto di questo piano infinito ha un valore calcolato secondo la nota3
- esistone delle mappe (che sono dei percorsi di punti all'interno del piano)
il piano quindi alla fin dei conti è una struttura (albero, hash o altro) vuota, che poi riempirò con i punti del percorso di una mappa.
boh.. ci sono concettualmente?
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
Originally posted by tandrea85
boh.. ci sono concettualmente?
Originally posted by ornati
-7 mod 2 = 1
http://www.google.it/search?hl=it&q=-7+mod+2
E dalla pagina 2 di questo thread:
http://en.wikipedia.org/wiki/Modulo_operation
code:
int modulo(int a, int b) { int x; if (a < 0) { x = -a + b - 1; a += x - x % b; return a; } return a % b; }
HELP ME!
Ho il primo progetto "Mappe" non riesco a modificarlo per formare il secondo "Mappe 2", in più sto preparando altri esami...c'è qualcuno che per favore me lo può fareee???
Ci sarà una riconpensa!
Raga qualcuno del primo turno che ha finito il progetto me lo potrebbe dare gentilmente io sono del secondo turno con torelli vi pago cazzooooooo helpme
ciaooooo
quindi la tabellona hash che veniva usata nel progetto mappe N°1 qui non ha senso? allora è come penso io servono solo i grafi delle mappe ed una struttura per i punti modificati.
certo bisogna dire che una struttura che contenga tutti i punti delle mappe non sarebbe male, in questo caso basterebbe un puntatore all'interno di ogni punto della mappa (nel caso si voglia modificare un punto appartenente a + mappe)
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
per l'input bisogna semplicemente leggere 1 riga alla volta?
per es. io scrivo:
c 1 1 asd.txt -> premo INVIO
rislutato istruzione
m 4 7 EWNNN -> premo INVIO
risultato istruzione
f -> premo INVIO
fine
oppure
c 1 1 asd.txt
m 4 7 EWNNN
f
-> premo INVIO
tutti i risultati 1 dopo l'altro come nel pdf
si penso di si
allora io ho pensato di prender in esame il rettangolo di punti compresi tra i vertici P e Q per la riduzione della mappa (e quindi la lista di adiacenze di quei punti) mentre per il sottocammino solo i punti compresi nella mappa.
giusto?
per il primo caso bisogna adattare un alg. per shortest path (esempio Dijksta) per il secondo... qualcuno ha idee?
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
Certo che se dovessimo essere in troppi ad utilizzare l'approccio proposto da Polsy... 
Voi dite che basta che non ci copiamo il codice e tutto ok?
Originally posted by tandrea85
per l'input bisogna semplicemente leggere 1 riga alla volta?
per es. io scrivo:
c 1 1 asd.txt -> premo INVIO
rislutato istruzione
m 4 7 EWNNN -> premo INVIO
risultato istruzione
f -> premo INVIO
fine
oppure
c 1 1 asd.txt
m 4 7 EWNNN
f
-> premo INVIO
tutti i risultati 1 dopo l'altro come nel pdf
Originally posted by marcomaria
esiste una funzione fmod nella libreria std math.h; non funziona allo stesso modo...?
ragazzi ma Dijkstra coi pesi negativi come fate? in alternativa avete materiale sugli algoritmi DSP?
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
ciao a tutti!volevo sapere da voi se e dove piazzare l'output...è 1 pò difficile da spiegare:
nel progettino c'è una sfilza di righe di input e alla fine dice l'output prodotto deve essere bla bla bla...ma l'ouput lo devo salvare in un file e alla fine dell'esecuzione(cioè quando si premi in input il tasto f) si stampa a video o durante l'esecuzione?grazie a tutti!
__________________
Het is allemaal naar de zak!!!
per come ho capito io...ogni riga dell'input dev'essere seguita dal relativo output...altrimenti non avrebbe senso memorizzare i comandi per poi eseguirli uno dopo l'altro...o no???
__________________
"Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul"
domanda:
ho il mio piano, con una struttura che contiene tutti i punti modificati con il comando valore(x,y,v)...se poi cambio il piano col comando crea(m,n,nome), i punti cambiati precedentemente rimangono tali o devo cancellare la struttura che li conteneva perchè sono stati "rivalutati" dalla creazione del nuovo piano????
__________________
"Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul"
Originally posted by maynard80
ragazzi ma Dijkstra coi pesi negativi come fate? in alternativa avete materiale sugli algoritmi DSP?
Porco cane credevo di avercela fatta e invece sto avendo dei problemoni. Tutto funziona quando l'origine e' minore della destinazione ed entrambe sono positive...
Se invece ho tipo origine 2 2 e destinazione -4 -5 e' il caos, uff...
Originally posted by darkAntAreS
domanda:
ho il mio piano, con una struttura che contiene tutti i punti modificati con il comando valore(x,y,v)...se poi cambio il piano col comando crea(m,n,nome), i punti cambiati precedentemente rimangono tali o devo cancellare la struttura che li conteneva perchè sono stati "rivalutati" dalla creazione del nuovo piano????
Originally posted by darkAntAreS
domanda:
ho il mio piano, con una struttura che contiene tutti i punti modificati con il comando valore(x,y,v)...se poi cambio il piano col comando crea(m,n,nome), i punti cambiati precedentemente rimangono tali o devo cancellare la struttura che li conteneva perchè sono stati "rivalutati" dalla creazione del nuovo piano????
visto, grazie ![]()
__________________
"Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul"
Originally posted by darkAntAreS
domanda:
ho il mio piano, con una struttura che contiene tutti i punti modificati con il comando valore(x,y,v)...se poi cambio il piano col comando crea(m,n,nome), i punti cambiati precedentemente rimangono tali o devo cancellare la struttura che li conteneva perchè sono stati "rivalutati" dalla creazione del nuovo piano????
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
Ho un piccolo problema cioe' e' proprio piccolissimo...nn ho controllato tutte le pagine dietro e quindi nn so se qualkun'altro ha avuto il mio stesso problemino cmq...il file di ornati nn mi stampa nulla cm output...so che nn me ne dovrebbe sbattere molto visto che i due proge sono differenti pero' volevo almeno vedere un po' mappe e zero nn mi da output...
ciao
Originally posted by doddy
Ho un piccolo problema cioe' e' proprio piccolissimo...nn ho controllato tutte le pagine dietro e quindi nn so se qualkun'altro ha avuto il mio stesso problemino cmq...il file di ornati nn mi stampa nulla cm output...so che nn me ne dovrebbe sbattere molto visto che i due proge sono differenti pero' volevo almeno vedere un po' mappe e zero nn mi da output...
ciao
Originally posted by doddy
Ho un piccolo problema cioe' e' proprio piccolissimo...nn ho controllato tutte le pagine dietro e quindi nn so se qualkun'altro ha avuto il mio stesso problemino cmq...il file di ornati nn mi stampa nulla cm output...so che nn me ne dovrebbe sbattere molto visto che i due proge sono differenti pero' volevo almeno vedere un po' mappe e zero nn mi da output...
ciao
Originally posted by doddy
Ho un piccolo problema cioe' e' proprio piccolissimo...nn ho controllato tutte le pagine dietro e quindi nn so se qualkun'altro ha avuto il mio stesso problemino cmq...il file di ornati nn mi stampa nulla cm output...so che nn me ne dovrebbe sbattere molto visto che i due proge sono differenti pero' volevo almeno vedere un po' mappe e zero nn mi da output...
ciao
Oooh che bello ho praticamente finito riduci()... madonna santa che fatica.
Qualcuno ha gia implementato sottopercorso() ? Idee ?
io ho fatto sottopercorso!!!
un consiglio: NON fare l'errore di calcolarti ogni sottopercorso da ogni punto..ragiona su come è fatto un sottopercorso e da dove deve, per forza di cose, partire per essere tale...
nel caso peggiore a me viene (nlogn)/2, ma bisogna essere proprio sfigati...e nel caso medio viene circa n/2
__________________
"Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul"
Originally posted by darkAntAreS
io ho fatto sottopercorso!!!
un consiglio: NON fare l'errore di calcolarti ogni sottopercorso da ogni punto..ragiona su come è fatto un sottopercorso e da dove deve, per forza di cose, partire per essere tale...
nel caso peggiore a me viene (nlogn)/2, ma bisogna essere proprio sfigati...e nel caso medio viene circa n/2
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
| All times are GMT. The time now is 13:59. | Pages (2): [1] 2 » Show all 246 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.