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![]()