Esercizio C - strutture dati

di Anonimizzato11960 il
5 risposte
Un archivio musicale è organizzato nel seguente modo: gli artisti sono disposti in un array e sono ordinati per nome; ogni artista ha associata un array di album organizzati per anno e a parità di anno per ordine alfabetico; ogni album contiene un array di canzoni ordinate per posizione all’interno dell’album.
Le strutture dati utilizzate sono le seguenti:
typedef struct Song { char * titolo;
int durata;
int pos;
int valido; } Canzone;
typedef Canzone SequenzaCanzoni[1000];

typedef struct Album { char * titolo;
int n_canzoni;
int anno;
SequenzaCanzoni canzoni;
int valido; } Disco;
typedef Disco SequenzaDischi[1000];

typedef struct Singer { char * nome;
int n_dischi;
SequenzaDischi dischi;
int valido; } Artista;
typedef Artista SequenzaArtisti[1000];

Il campo “valido” presente in tutte le struct serve a dire se la casella dell’array contiene contenuto valido (nel caso l’attributo ha valore 1) o è da considerarsi vuota (nel caso l’attributo ha valore 0).

Si codifichi in C la seguente funzione:
int invalidaCanzone (SequenzaArtisti artisti, char * artista, char * disco, char * canzone)
che invalida dal catalogo la canzone qualora questa esista e restituisce 0 in caso di esito positivo, -1 in caso di canzone non esistente. Qualora la canzone sia l’unica del disco, occorre inoltre invalidare il disco. Infine, se il disco invalidato dovesse essere l’unico esistente dell’artista, è necessario invalidare l’artista stesso. Conseguentemente, vanno opportunamente aggiornati i contatori del numero di canzoni e di dischi.

5 Risposte

  • E quindi ? La domanda o il dubbio qual è ?
  • Codifiare in C la funzione richiesta
  • Ma mica lo facciamo noi nel forum ... lo devi iniziare tu e qui se ne parla ... il forum non è un "servizio gratuito di redazione programmi" ...
  • Si ok, ma l'ho scritto appunto per vedere come è possibile procedere, sin dall'inizio
  • Non hai capito ... devi cercare tu di impostare il problema, non basta porre l'esercizio ...
Devi accedere o registrarti per scrivere nel forum
5 risposte