Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    3

    Come etichettare un arco di un grafo?

    Salve a tutti, vorrei un aiuto su un programma in java...
    Allora, devo creare due file di oggetti, uno di tipo persona(cognome,nome,età) e
    uno di tipo relazione(persona1,persona2,tipo_relazione) dove gli attributi
    persona1,persona2 sono oggetti di tipo persona. Si devono caricare i dati in un
    grafo...e si devono etichettare gli archi con la tipologia di relazione. Non so
    come leggere dal main i due file di oggetti! ne so leggere solo uno...Il "persone.dat".
    Ecco la mia implementazione:

    import java.io.*;

    public class Esame
    {

    public static void main(String[]args)throws Exception
    {
    DigrafoLA g=new DigrafoLA();

    try{
    ObjectInputStream ois=new ObjectInputStream(new FileInputStream("persone.dat"));

    while(true)
    {
    try{

    Persona t=(Persona)ois.readObject();

    g.aggiungiNodo(t);

    }
    catch(Exception e){break;}
    }
    ois.close();
    System.out.println(g);

    int numArchi=(g.getNumNodi()*g.getNumNodi())…
    for (int i = 0; i <numArchi; i++)
    {
    int src, dst;

    src=(int)(Math.random()*g.getNumNodi());
    dst =(int)(Math.random()*g.getNumNodi());

    g.aggiungiArco(g.getNodo(src),g.getNodo(dst));

    System.out.println("Inserito arco tra "
    + g.getNodo(src).info + " e "
    + g.getNodo(dst).info);
    }
    System.out.println("\nEcco i nodi con la relativa lista di adiacenza!:\n");
    System.out.println(g);


    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }

    Ecco il primo file, in cui creo le persone:
    import java.io.*;
    public class creaFile //implements Serializable
    {
    public static void main (String[] args)
    {

    Persona p1=new Persona("Rossi","Mario",56);
    Persona p2=new Persona("Neri","Lucia",47);
    Persona p3=new Persona("Rossi","Pippo",29);

    try{
    ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(new
    File("persone.dat")));


    oos.writeObject(p1);
    oos.writeObject(p2);
    oos.writeObject(p3);

    oos.close();
    System.out.println("ok!");
    }
    catch(IOException e)
    {
    System.out.println(e);
    }
    }
    }

    L'altro file in cui creo le relazioni tra le persone:
    import java.io.*;

    public class creaRelazioni
    {
    public static void main (String[] args) throws Exception
    {
    Persona p1=new Persona("Rossi","Mario",56);
    Persona p2=new Persona("Neri","Lucia",47);
    Persona p3=new Persona("Rossi","Pippo",29);

    Relazione r1=new Relazione(p1,p2,"MARITO DI");
    Relazione r2=new Relazione(p2,p1,"MOGLIE DI");
    Relazione r3=new Relazione(p3,p2,"FIGLIO DI");
    Relazione r4=new Relazione(p3,p1,"FIGLIO DI");

    try{
    ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(new
    File("relazioni.dat")));


    oos.writeObject(r1);
    oos.writeObject(r2);
    oos.writeObject(r3);
    oos.writeObject(r4);

    oos.close();
    System.out.println("ok!");
    }
    catch(IOException e)
    {
    System.out.println(e);
    }
    }
    }
    class Persona implements Serializable
    {
    public String cognome,nome;
    public int eta;


    public Persona(String c,String n,int e)
    {
    cognome=c;
    nome=n;
    eta=e;
    }

    public String getCognome(){
    return cognome;
    }
    public String getNome(){
    return nome;
    }
    public int getEta(){
    return eta;
    }


    public String toString()
    {
    return (cognome+","+nome+", Età:"+eta);
    }

    }

    Questa la classe Relazione:

    import java.io.*;
    public class Relazione implements Serializable
    {
    protected Persona p1,p2;
    protected String rel;


    public Relazione(Persona pU,Persona pD,String r)
    {
    p1=pU;
    p2=pD;
    rel=r;
    }

    }

    E questo è il metodo toString del grafo orientato, in cui devo stampare gli
    archi etichettati con il tipo di relazione, ed è qui il problema...

    public String toString()
    {
    String str="DigrafoLA:\n";
    for(int i=0; i<nodi.size ; i++)
    {

    NodoLAor nodoTemp= (NodoLAor)nodi.get(i);
    str += "- "+(nodoTemp.info) + "";

    for(int j=0; j<nodoTemp.LA.size;j++)
    {

    NodoLAor adiacente= (NodoLAor)nodoTemp.LA.get(j);
    //str += "-"+((RELAZIONE)adiacente.info).rel+"["+adiacente.info+"]";

    str +="-["+adiacente.info+"]";
    }

    str += "\n";
    }
    return str;
    }

    Grazie per l'attenzione

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Come espressamente indicato nel regolamento interno (al punto 6), il codice va postato indentato e all'interno degli appositi tag CODE, altrimenti, come si è visto qui, risulta quasi completamente illeggibile.

    Il codice sopra riportato è completamente privo di una minima indentazione, quindi rimane così.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.