Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    93

    [C++] Creare una Lista di Code

    Salve a tutti, ho questo problema:

    Simulare una situazione in cui si assegnano in modo casuale N=10 utenti in attesa di servizio, identificati da un numero intero, a una di M=3 possibili code.
    Dopo che N/2 utenti sono stati accodati, ogni volta che un nuovo utente è accodato, si sceglie una coda a caso e l'utente in testa alla coda è servito. Si stampi:
    -il contenuto delle code dopo la sistemazione dei primi N/2 utenti;
    -l'utente accodato, quello servito e lo stato delle code a partire da quando gli utenti sono servito fino ad esaurimento delle code
    Ho pensato di utilizzare 3 code inserite in una lista ( cioè la prima cella della lista corrisponde alla prima coda ... e cosi via)

    Ho come struttura dati già create una:
    CodaVT ( realizzata tramite vettori)
    ListaPT (realizzata con puntatori)
    Cellap ( corrisponde ad una cella della lista)

    Il mio problema adesso che non saprei come iniziare... come posso fare a dichiararmi una lista di code ? Grazie

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Una lista che ha come elementi CodaVT (o CodaVT *).
    Ad ogni modo, dato che hai come dato certo che vi sono 3 code e che il loro numero non varia nel tempo, non è più semplice usare un array?

    Inoltre una lista non sarebbe comunque opportuna. Quando si vuole un accesso non sequenziale è molto meglio un array o un vettore.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    93
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Una lista che ha come elementi CodaVT (o CodaVT *).
    Ad ogni modo, dato che hai come dato certo che vi sono 3 code e che il loro numero non varia nel tempo, non è più semplice usare un array?

    Inoltre una lista non sarebbe comunque opportuna. Quando si vuole un accesso non sequenziale è molto meglio un array o un vettore.
    Ciao , grazie per la risposta... gli elementi sono CodaVT * .

    Cmq come puoi vedere nella traccia la seconda struttura dati viene lasciata in dubbio ( non viene detta in modo da lasciare all'utente quale scegliere). Tu quindi mi consigli di creare un vettore di di code visto il mio problema??

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da banino84 Visualizza il messaggio
    Ciao , grazie per la risposta... gli elementi sono CodaVT * .

    Cmq come puoi vedere nella traccia la seconda struttura dati viene lasciata in dubbio ( non viene detta in modo da lasciare all'utente quale scegliere). Tu quindi mi consigli di creare un vettore di di code visto il mio problema??
    Il fatto che non venga specificata non significa che tu debba pescarne una a caso e usare quella. La struttura dati interna sarà certamente una coda. Ma per la struttura dati esterna ti serve qualcosa di adatto all'accesso random, quindi non una lista.
    (in questo caso specifico non farebbe molta differenza (a parte forse per le complicazioni nella gestione), ma se supponiamo tu debba gestite ad esempio 10.000 code, allora ogni volta che vuoi accedere all'elemento 9.999 dovrai prima accedere a tutti i precedenti, e così per ogni elemento).
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    93
    Sisi giusto

    Posso chiederti come posso iniziare con le dichiarazione del mio vettore di code?

  6. #6
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    CodaVT nome_variabile[3];

    O CodaVT *, a seconda di code è implementata.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    93
    Questa è la mia interfaccia di CodaVT ... come posso fare ... grazie ancora
    codice:
    #ifndef _CODAVT_
    #define _CODAVT_
    #include <iostream>
    
    using namespace std;
    
    template < class T>
    class CodaVT {
    public:
    
        typedef T tipoelem;
       /*Metodi*/
    
       CodaVT(int);/*Costruttore*/
       ~CodaVT();/*Distruttore*/
    
       /*Operazioni su Coda*/
    
       void creaCoda();/*Crea la coda e inizializza i valori*/
       bool codaVuota();/*Verifica se la coda è vuota*/
       void fuoriCoda();/*Rimuove l'elemento in testa*/
       void inCoda(tipoelem);/*Inserisce l'elemento in fondo alla coda*/
       tipoelem leggiCoda();/*Legge l'elemento in testa*/
    
    private:
       /*Attributi*/
       tipoelem *elementi;
       int testa, lung, maxlung;
    };
    
    #endif // _CODAVT_H

  8. #8
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    A parte che dichiarazione e implementazione di un template non possono essere separati, se sei riuscito a scrivere un template e non riesci a dichiarare un array c'è qualcosa che non va...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    93
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    A parte che dichiarazione e implementazione di un template non possono essere separati, se sei riuscito a scrivere un template e non riesci a dichiarare un array c'è qualcosa che non va...
    Guarda la dichiarazione l'ho fatta ma continuo ad avere problemi, ad esempio se uso l'operatore inCoda()
    codice:
    int i=3;
          CodaVT<int> *M[i];
          for(int j=1;j<=3;j++)
          M[j]= new CodaVT<int>(10);
          
          M[1].inCoda(1);
    l'errore : `inCoda' has not been declared
    request for member of non-aggregate type before '(' token
    non sto capendo dove sbaglio
    codice:
    #include <iostream>
    #include "CodaVT.h"
    
    
    using namespace std;
    
    
    int main(int argc, char *argv[])
    {
          
          int i=3;
          CodaVT<int> *M[i];
          for(int j=1;j<=3;j++)
          M[j]= new CodaVT<int>(10);
          
          M[1].inCoda(1);
         
        system("PAUSE");
        return EXIT_SUCCESS;
    }

  10. #10
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da banino84 Visualizza il messaggio
    Guarda la dichiarazione l'ho fatta ma continuo ad avere problemi, ad esempio se uso l'operatore inCoda()
    codice:
    int i=3;
          CodaVT<int> *M[i];
          for(int j=1;j<=3;j++)
          M[j]= new CodaVT<int>(10);
          
          M[1].inCoda(1);
    l'errore : `inCoda' has not been declared
    request for member of non-aggregate type before '(' token
    non sto capendo dove sbaglio
    codice:
    #include <iostream>
    #include "CodaVT.h"
    
    
    using namespace std;
    
    
    int main(int argc, char *argv[])
    {
          
          int i=3;
          CodaVT<int> *M[i];
          for(int j=1;j<=3;j++)
          M[j]= new CodaVT<int>(10);
          
          M[1].inCoda(1);
         
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    Riguarda bene, hai un puntatore a CodaVT, non un oggetto CodaVT.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.