[C] Esercizio di Informatica sui tipi

Jenny920
Ciao a tutti mi si presenta un esercizio di questo tipo a un esame di Informatica generale degli anni scorsi:
a) Definire dei tipi per rappresentare una canzone. Definire un TipoNota contenente nota (intero o stringa i cui valori sono: do, re, mi fa, sol, la, si), ottava, durata (1, 0.5, 0.25, 0.125). Definire un TipoBattuta contenente fino a 8 note e infine definire un TipoSpartito contenente fino a NBattute (definire una opportuna costante) ed un nome per la canzone.
b) Definire le seguenti funzioni:
• BattutaOK, riceve in input una battuta per riferimento e ritorna:
1 se la somma delle durate delle note contenute è pari a 1,
0 in caso contrario.
• SpartitoOK, riceve in input una variabile di TipoSpartito per riferimento e se tutte le battute sono corrette (utilizzare la funzione precedente) ritorna il numero di note e la durata complessiva, altrimenti ritorna un valore -1 per numero note e durata complessiva.

Pensavo di risolvere il tutto cosi... ditemi voi se puo andare bene o come posso rimediare grazie :D
#define MAX 8
#define NBatt 10

typedef enum{do=0,re,mi,fa,sol,la,si}Nota;

typedef struct{
Nota nota;
int ottava;
float durata;
}TipoNota;

typedef TipoBattuta batt[MAX];

typedef struct {
TipoBattuta b[NBatt];
char nome;
} TipoSpartito;


Risposte
claudio862
In TipoSpartito, "nome" deve essere un array di caratteri, tu l'hai definito come singolo carattere. Darei poi un altro nome alla costante MAX, oppure userei direttamente il valore 8. Infine, TipoSpartito contiene fino a NBatt battute, ma magari ne contiene di meno. Quindi ti serve un'altra variabile intera che contiene il numero effettivo di battute.

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