.dsy:it.
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Programmazione (http://www.dsy.it/forum/forumdisplay.php?forumid=259)
-- [Capra] Progetto (http://www.dsy.it/forum/showthread.php?threadid=24088)


Posted by Xander on 11-02-2006 09:43:

[Capra] Progetto

Qualcuno ha qualche delucidazione sul progetto???
a me nn risulta molto chiaro... :(


Posted by Xander on 11-02-2006 12:31:

tutti che leggono e nessuno che scrive???


Posted by dafth on 11-02-2006 14:54:

ho letto il testo...
ti chiede semplicemente di gestire un "insieme" di nodi ad ogni nodo è associato l'indice di una matrice di incidenza, nell'indice vengono memorizzate le associazioni con gli atrli nodi:
esempio

MATRICE
boolean[3][3] matrice;

all'indice boolean[0] avrai un array di boolean che descrivono l'associazione del nodo "0" con i nodi corrispondenti all'indice


matrice[0][0] associazione nodo0 , nodo0
matrice[0][1] associazione nodo0, nodo1
matrice[0][2] associazione nodo0, nodo2

matrice[1][0] associazione nodo1, nodo0
....
e così via

le associazioni sono gli archi quindi se matrice[0][1] == true allora (nodo0,nodo1) ha un arco


Posted by imperator on 11-02-2006 15:23:

dafth...
da quanto ho capito tu consigli di usare come struttura per memorizzare i nodi un insieme che potrai distinguere grazie all'identificatore che assegnerai a ciascun nodo tramite la classe Element fornita dal prof.
Ha senso quello che ho scritto, vero?...non accetto risposte negative ;-)


Posted by dafth on 11-02-2006 15:31:

si tieni presente che ha dato anche l'implementazione della classe Nodo che estende ELement, quindi credo che voglia che venga usata la
classe interna


Posted by imperator on 11-02-2006 15:37:

ok, infatti quello che ho fatto io è stato chiamare il costruttore di Element all'interno del costruttore del nodo...
Una volta fatto questo userò i metodi della claase Insieme del pighizzi per aggiungere, fare disfare confrontare...
thanks for all....


Posted by dafth on 11-02-2006 15:44:

il costrutore senza senza parametri Element() viene richiamato automaticamente nel costruttore Node()


Posted by imperator on 11-02-2006 15:47:

stavo appena scrivendo la correzione che hai fatto tu...
chiedo venia x l'ignoranza


Posted by dafth on 11-02-2006 15:54:

cmq non era un errore :)


Posted by Xander on 11-02-2006 17:17:

il mio problema principale(Dato credo dalla mia ignoranza in materia), e che il costruttore graph ha come argomento un array di array boolean.come posso io con un oggetto del genere ad aggiungere/rimuovere nodi/archi?
una volta che ho inizializzato l'array di array
boolean[][] matrice= new boolean[i][j],posso aggiungere un i e un j a questo array??? ( che domanda da n00b...)


Posted by imperator on 11-02-2006 18:14:

Xander anch'io non sono un darago in materia...cerco d'arrabattarmi (arrangiarmi) in qualche modo...
cmq nel costruttore della graph ho usato due cicli for innestati per controllare che non vengano creati archi entranti e uscenti dallo e nello stesso nodo (ho compreso inoltre un if per controllare le posizioni uguali); esmpio:
j
i [t][f] in pratica con la variabile i di un ciclo for controllo le righe,
[f][f] con la variabile j dell'altro ciclo for controllo le collonne
mentre con l'if controllo : if (incidence_matrix [i][j] == true) sollevami l'eccezione IncorretGraphDescription.

poi sempre nel costruttore ho usato altri due cicli for:
uno per creare i nodi (aggiungendoli ad un insieme di nodi) della matrice:
(for (int = 0; i < incidence_matrix[o].length, i++){
Node nuovoNodo = new Node ();
nodi.add (nuovoNodo)
//"nodi" è l'insieme di nodi che ho creato
}

l'altro ciclo for l'ho usato per creare l'insieme degli archi.

Spero di non averti incasinato ulteriormente con dei ragionamenti che magari non hanno nè capo nè coda...per adesso però mi è venuto in mente di farlo così...


Posted by Xander on 11-02-2006 19:33:

hai provato a compilarlo?


Posted by imperator on 11-02-2006 20:33:

si ho provato a compilarlo eppure con successo...il fatto che non sono riuscito a creare una classe di test ottima per vericare se quel poco che ho fatto funziona correttamente...
nella classe di test ho controllato solamente la correttezza dei cicli for usati per scandire la matrice in input al costruttore della classe Graph.
per adesso spero


Posted by Xander on 11-02-2006 20:36:

vai a vedere i pm


Posted by imperator on 13-02-2006 13:36:

ho un problema...
quando invoco il costruttore della classe Graph costruisco sia nodi sia archi.
per i nodi nessun problema.
ma per quanto riguarda gli archi come faccio a costruirli passando come parametri 2 nodi (sorgente e destinazione), visto che comunque uso come parametro una matrice di boolean ed inoltre non idea di come andare a reperire il nodo creato da una determinata casella della matrice
esempio:
j
i [f][t]
[f][f]
come faccio ad indicare nella creazione dell'arco che il nodo sorgente è quello corrispondente alla posizione i=0, mentre quello di destinazione è quello corrispondente alla posizione j=1?;
spero di essere stato chiaro nella complessità del problema e di essermi spiegato.
cmq qualsiasi idea è ben accetta.
grazie


Posted by Ale_Destroy on 13-02-2006 16:08:

Guarda io avevo il tuo stesso problema... però se guardi nella classe element noterai ke c'è il metodo int getIde(), x cui ogni nodo ha un identificatore univoco... il primo nodo ke costruisci avrà identificatore 1, il secondo 2 ecc... x cui io ho fatto grafo[source.getIde() -1][destination.getIde() -1] == true

Sia source.getIde() ke destination.getIde() sono interi corrispondenti al numero del nodo richiesto.. x cui in questo modo colleghi la matrice all'insieme dei nodi... Ricordati il -1 xkè l'identificatore parte da 1 (infatti è ++elem_identifier) mentre il primo indice dell'array è zero..


Posted by Xander on 13-02-2006 18:26:

qualcuno mi spiega come funziona la classe iterator?


Posted by imperator on 14-02-2006 14:40:

Ho un problema...
nella classe di test creo un nodo x che in seguito vado ad aggiungere a un grafo:
Graph primo = new Graph (matrice_data_come_parametro);
Node x = new Node ();
primo.addNode(x);

il compilatore mi da questo errore:
addNode(Graph.Node) in Graph cannot be applied to (Node)
primo.addNode(x);
se qualcuno ha qualche idea sul perchè mi faccia sapere...
grazie


Posted by Ale_Destroy on 14-02-2006 17:46:

Dunque vediamo se riesco ad aiutarvi..

X Xander: Suppongo ke ti riferisci a quei metodi ke hanno come valore di ritorno iterable<Node>. Iterator è un interfaccia astratta e nn la puoi istanziare come un oggetto, devi quindi usare un oggetto di una classe ke implementi iterable, ad esempio una linkedList... Ti faccio un esempio xkè a parole nn è facile:
Iterable<Node> a = new LinkedList<Node>();
Quindi a è il tuo oggetto, una struttura dati ke contiene oggetti di tipo node. L'iterator serve per interagire con questa collezione, per usarlo devi istanziare un oggetto iterator dal tuo oggetto a ke è iterable.. esempio:
Iterator<Node> b = a.iterator();
Ora da b puoi accedere a tutti i metodi dell'iterator (hasNext() next().....) in riferimento alla collezione di elementi a..

Mentre x imperator: Nn sapendo il tuo codice nn posso dirlo con precisione.. xò quell'errore è dovuto probabilmente al fatto ke al metodo addNode passi una variabile di una tipologia ke java nn si aspetta... quindi dovresti riguardarti le variabili ke hai messo nel codice del metodo secondo me


Posted by imperator on 14-02-2006 19:26:

Ale_Destroy grazie per il consiglio però...mi è stato detto che quell'errore (addNode(Graph.Node) in Graph cannot be applied to (Node) primo.addNode(x)) era forse dovuto perchè cercavo di fare una classe di test al di fuori della classe Graph.
ho provato dunque a fare il main all'interno della classe Graph (come per altro indicato dal prof nel file .java del progetto) e mi da un altro errore...
quando cerco di creare un nodo mi dà quest'errore:
"non-static variable this cannot be referenced from a static context";
grazie per l'aiuto


Posted by Ale_Destroy on 14-02-2006 19:40:

Giusto nn ci avevo pensato! Bè l'importante è ke hai risolto... e quell'errore nel main lo da anke a me... io x risolverlo ho dichiarato static la classe node e gliel'ho scritto nel commento... Spero gli vada bene xkè altri modi x adesso nn ne vedo!


Posted by Xander on 14-02-2006 23:38:

ale_destroy grazie mille.domani proverò a fare quella cosa che mi hai detto.almeno ci aiutiamo tra di noi..
per quanto riguarda il problema della classe Node,anche io l'ho dichiarata static,altrimenti nn se ne esce +


Posted by imperator on 15-02-2006 09:19:

risolto il pbolema della classe Node dichiarandola static (anche se non mi piace cambiarle il prototipo rispetto a quella che ha dato il prof)
Ho un'altro problema...eppure simile
nella classe di test creo un arco x che in seguito vado ad aggiungere a un grafo:

Graph primo = new Graph (matrice_data_come_parametro);
Node a = new Node ();
Node b = new Node ();
primo.addArc(a, b);

il compilatore mi da questo errore:
addArc (Graph.Node, Graph.Node) in Graph cannot be applied to (Graph.Arc)
primo.addArc(x);
^
Premessa: mi sono creato una classe Arc per gli archi.
la classe Arc è anche lei static, e il main adesso è all'interno della classe Graph.
se qualcuno ha qualche idea sul perchè mi faccia sapere...
grazie


Posted by Xander on 15-02-2006 09:24:

Ale_Destroy,ho fatto quello che mi hai detto te,cioè:

Iterable<Node> a= new Insieme<Node>();

e il compilatore mi dice simpaticamente:


Graph.java:108: <identifier> expected
Iterable <Node> a = new Insieme <Node>();
^

Graph.java:109: cannot resolve symbol
symbol: class Iterable
location: class Graph
Iterable <Node> a = new Insieme <Node>();
^

2 errors


ditemi che fare pls....


Posted by Ale_Destroy on 15-02-2006 14:10:

x Xander: Prova così allora --> Collection<Node> a = new LinkedList<Node>(); La collection è un'altra struttura dati ke è sottoclasse di iterable.. quindi nel metodo va bene lo stesso.. ma dovrebbe essere la stessa cosa.. Per quanto riguarda il compilatore.. evidentemente nn trova la classe iterable.. x cui le cose sono 2.. Hai messo all'inizio la clausola "import java.util.*? Senza quella nn funziona.. e hai il java 1.5 vero? xkè l'interfaccia iterable è una novità dell'1.5 se hai l'1.4 nn la puoi fare..

x Imperator: Nn ti saprei dire xkè io ho fatto in modo diverso.. cioè mi sembra inutile fare una classe di archi quando un arco nn è altro ke un valore true sulla matrice... ti complichi solo la vita...Basta imporre ke la matrice nella posizione indicata dall'identificatore dei nodi è true.. Cmq ho visto ke nel messaggio di errore ti dice ke è causato dal metodo addArc(x); Suppongo ke x sia l'arco ke hai creato dalla tua classe di archi... xò il metodo addArc accetta 2 parametri source e destination.. quindi 2 nodi.. e nn ci puoi mettere l'arco.. ma nn capisco bene xkè nella riga di comando hai messo addArc(a,b) ma il compilatore trova l'errore in addArc(x) :?


Posted by Xander on 16-02-2006 09:14:

Altra domanda:
invocando System.out.println(grafo.tostring());
vorrei che mi uscisce una cosa del genere:
Ciao come va?
bene grazie..

su più righe intendo.
ma all'interno di tostring,io posso dare solo un valore di ritorno.
c'è un metodo che mi permetta di andare a capo in una stringa???


Posted by imperator on 16-02-2006 09:21:

prova a inserire nel metodo toString() un qualcosa del tipo
return "Ciao come va?\nbenegrazie..."
\n è il carattere di new line... quindi va a capo


Posted by imperator on 16-02-2006 13:15:

ma il progetto bisogna consegnarlo entro oggi o si è in tempo a consegnarlo anche domani?


All times are GMT. The time now is 06:21.
Show all 28 posts from this thread on one page

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