Strutture dati

gloria19881
Ciao a tutti...
Mi viene chiesto di considerari un programma che gestisce un archivio di dischi audio/video sui cd/dvd. Per ogni disco devo tenere conto delle informazioni riguardanti la tipologia, il formato, il titolo e un codice numerico progressivo.
-definire una struttura disco in modo che sia idonea a memorizzare le informazioni riguardanti a ciascun disco.
-definire tutti i tipi necessari per costruire una lista di elementi di tipo disco.

-
Struct Disco {
  char *titolo[50];
  char tipo;
  char formato;
  int codice;
  }

-Per il secondo punto non so come procedere.
Grazie a tutti in anticipo. :-D

Risposte
apatriarca
Visto il codice, suppongo che il tuo codice sia in C. È corretto? Oppure usi il C, ma lo compili usando un compilatore C++ (questo non è infatti il modo in cui il problema verrebbe risolto in C++)?

Partiamo dal primo punto che hai risolto secondo me con troppa fretta (e qualche errore).

-definire una struttura disco in modo che sia idonea a memorizzare le informazioni riguardanti a ciascun disco.

Quali sono le informazioni riguardanti ciascun disco?
1. Tipologia. Quali sono le possibili tipologie? Devo supporre che siano audio e video? Perché hai scelto di rappresentare questo tipo di dato usando un char?
2. Formato. Quali sono i possibili formati? Devo supporre siano dvd e cd? Perché hai scelto di rappresentare questo tipo di dato usando un char?
3. Codice numerico progressivo. Quali valori può assumere questo codice numerico? Ha senso che sia ad esempio negativo? Perché pensi che int sia il tipo corretto in questo caso? Sei certa che il numero di dischi sarà inferiore a $2^15-1 = 32767$?
4. Titolo. Qual'è la lunghezza massima di questa stringa? Credo che in questo caso 50 possa essere una scelta abbastanza buona. Il tipo però in questo caso è completamente sbagliato. O usi un puntatore a char e allochi la stringa dinamicamente ogni volta, oppure usi un array di char di dimensione fissa (io mi affiderei a questa seconda soluzione).

Ci sono come vedi numerose questioni a cui si deve rispondere prima di scrivere la definizione di una struttura. A parte questo il tuo esempio di codice è sbagliato perché ogni parola chiave del C va scritta sempre in minuscolo. Devi quindi sempre scrivere struct, e non Struct o STRUCT o qualsiasi altra versione. Personalmente avrei scritto qualcosa come:
enum Tipologia {AUDIO, VIDEO};
typedef enum Tipologia Tipologia;

enum Formato {CD, DVD};
typedef enum Formato Formato;

typedef struct Disco Disco;
struct Disco {
    unsigned long codice;
    Tipologia tipologia;
    Formato formato;
    char titolo[50];
};

È possibile che alcune parti di questo codice ti possano apparire strane, chiedi pure se non capisci il senso di alcune istruzioni.


-definire tutti i tipi necessari per costruire una lista di elementi di tipo disco.

Ci sono tantissimi modi per scrivere una lista, ma solo uno è in realtà insegnato all'università. Se ti hanno richiesto di creare una lista di dischi suppongo che da qualche parte tu abbia del codice che implementa una lista. Non dovrebbe essere difficile adattare quel codice a questo caso, quindi prova a partire da quello.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.