Esempi ce ne sono tanti, più o meno corretti (come questo http://www.daniweb.com/forums/thread256309.html, guarda però le correzioni !), tuttavia dipende dalle caratteristiche che vuoi implementare e dalle funzionalità che vuoi utilizzare (per esempio OOP?) quindi la risposta è vaga.

Dal codice che hai postato mi vengono in mente 2 cose:

1. per la data userei una struttura apposita, e creerei anche una funzione in grado di verificare se una data inserita è corretta

2. eviterei switch con confronto di stringhe ("lunedì", "martedì" ecc..) ma opterei per un bel
typedef enum DayOfWeek{} DayOfWeek con i relativi giorni in modo da associare ad ogni giorno un valore numerico (ricorda: le funzioni che a partire da una data ti indicano il giorno della settimana, ritornano sempre un int, in genere 0 per la Domenica andando in avanti (evidente derivazione anglosassone), ecco perchè è utile identificare i giorni come numeri interi)


Per qualsiasi altro dubbio, posta pure



Ciao