Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - c++ grafi e loro implementazione
Forum - C/C++ - c++ grafi e loro implementazione

Avatar
hawks (Normal User)
Newbie


Messaggi: 11
Iscritto: 10/11/2012

Segnala al moderatore
Postato alle 12:46
Sabato, 10/11/2012
Salve a tutti sono nuovo delm forum ho un problema, l'argomento è abbastanza complesso  almeno per me.
Spero che qui posso risolverlo grazie all'aiuto vostro.
Allora vado al dunque sappiamo dalla teoria che per rappresentare un grafo ci sono due modi attraverso le matrici o le liste di adiacenza.
A me interessano le seconde <liste>, allora sempre dalla teoria sappiamo che per utilizzare le liste dobbiamo far si che per ogni nodo memorizziamo la lista dei suoi adiacenti.ora posto una traccia

In un laboratorio vi sono n personal computer, ciascuno individuato da un codice ed associato ad alcune informazioni come la dimensione della memoria RAM, l’elenco degli hard disk installati( ciascuno individuato da un codice e caratterizzato da una capacità e da un tempo di accesso) e l’indicazione della possibile presenza di un modem.
Due pc possono essere connessi da un collegamento dati  peer -to –peer .Ogni collegamento è bidirezionale e caratterizzato da un ritardo di trasmissione.
Si rappresenti la situazione sopra descritta e si implementino le seguenti funzioni (il candidato non si deve occupare della inizializzazione del sistema, ma puo’ ipotizzare un funzionamento a regime):

1.    Funzione f1 che riceve i codici di due pc p1 e p2 ed un mumero v.La funzione inserisce nel sistema l’informazione che i due pc sono connessi da un collegamento a velocità massima v a patto che fra p1 e p2 non esista già un collegamento avente velocità superiore a v.
2.    Funzione f2 che accetta in ingresso una lista L di pc e un intrero k. La funzione restituisce la lista dei codici dei pc (1) non presenti in L e in cui sono installati (2) almeno un hard disk di capacità superiore a k e (3) un modem.
3.    Funzione f3 che restituisce la lista dei codici di pc tali che (1) la capacità totale degli hard disk installati sia massima e (2) ciascuno di essi sia collegato direttamente ad almeno  5 pc.
Ora cerchero' di mostrare graficamente la situazione per come lo capita io














hawks ha allegato un file: rappresentazione grafo laboratorio di computer.jpg (38278 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
hawks (Normal User)
Newbie


Messaggi: 11
Iscritto: 10/11/2012

Segnala al moderatore
Postato alle 12:54
Sabato, 10/11/2012
ora per la lista dei nodi ho pensato
class computer
{
int codice;
int dim;
lista<hard disk>L;
computer * succ;
computer *ptr=NULL;
ptr= new computer;
ptr->succ=NULL;


poi ovviamente si riempirà la parte informativa col comando ptr->codice....
fin qui va bene ma per il vettore  associativo???? come da figura??

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:18
Sabato, 10/11/2012
Quale sarebbe la domanda?


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
Qwertj (Dev Team)
Guru


Messaggi: 678
Iscritto: 30/05/2011

Segnala al moderatore
Postato alle 14:02
Sabato, 10/11/2012
Usa la classe list dell'STD, non stare a implementarla di nuovo in computer
Quel vettore sembra piuttosto banale, fai semplicemente un array, tanto le chiavi sono numeriche
Oppure non ho afferrato il problema


Blog:
<coming soon>
Appalo:
http://www.appalo.it/
PM Quote
Avatar
hawks (Normal User)
Newbie


Messaggi: 11
Iscritto: 10/11/2012

Segnala al moderatore
Postato alle 18:06
Sabato, 10/11/2012
ho trovato un listato di un grafo che credo possa fare al caso mio ma non ho capito alcune cose
Codice sorgente - presumibilmente C++

  1. class celletta
  2. {
  3.     celletta*prossimo;
  4.     int valore;
  5.  
  6.     public:
  7.         celletta**v;
  8.         void creazione(void);
  9. };
  10.  
  11. void celletta::creazione(void)
  12. {
  13.     cout<< "inserire numero nodi".\n";
  14.    cin>> number;
  15.    v=new celletta*[number];
  16.    for(i=0;i<number;i++)
  17.    {
  18.        v[i]=null;
  19.        // ...
  20.     }
  21. }


non ho capito v=new celletta*[nu,ber]
cioe so che con new alloco la struct con i suoi campi ma la scrittura finale *[number] non lo capita

Ultima modifica effettuata da Il Totem il 11/11/2012 alle 11:48
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:46
Domenica, 11/11/2012
Alloca un array di puntatori a celletta di lunghezza number. Non è una struct, comunque.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote