/home/manu/Dropbox/Projets/dates/main.cpp
#include <iostream>
#include <string.h>
using namespace std;

const char JOUR_SEMAINE[7][9] = {"lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"};

struct Mois
{
    char nom[10];
    unsigned char nombreDeJour;
};

const Mois MOIS[12] = {{"janvier", 31},
                                       {"février", 28},
                                       {"mars", 31},
                                       {"avril", 30},
                                       {"mai", 31},
                                       {"juin", 30},
                                       {"juillet", 31},
                                       {"août", 31},
                                       {"septembre", 30},
                                       {"octobre", 31},
                                       {"novembre", 30},
                                       {"décembre", 31}};

struct Date
{
    unsigned jourSemaine, jourMois, mois;
    int annee;
};


int main()
{
    char jourSemaine[9];
    char nomMois[10];
    Date aujourdhui;
    bool valide;

    cout << "ATTENTION, la correspondance du jour de la semaine"
         << " avec la date d'aujourd'hui ne sera pas vérifiée !" << endl << endl;

    do {
        cout << "Saisissez le jour d'aujourd'hui (ex : mardi 9 octobre 2012)" << endl << "Date = ";

        cin >> jourSemaine >> aujourdhui.jourMois >> nomMois >> aujourdhui.annee;

        valide = false;
        for (int jour=0; jour<7; jour++)
            if (strcmp(JOUR_SEMAINE[jour], jourSemaine) == 0)
            {
                aujourdhui.jourSemaine = jour;
                valide = true;
                break;
            }

        if (!valide)
        {
            cout << "Le jour de la semaine n'est pas valide !!!" << endl;
            continue;
        }

        valide = false;
        for (int mois=0; mois<12; mois++)
            if (strcmp(MOIS[mois].nom, nomMois) == 0)
            {
                aujourdhui.mois = mois;
                valide = true;
                break;
            }

        if (!valide)
        {
            cout << "Le mois n'est pas valide !!!" << endl;
            continue;
        }

        if (aujourdhui.jourMois > MOIS[aujourdhui.mois].nombreDeJour)
        {
            cout << "Le jour du mois n'est pas valide !" << endl;
            valide = false;
        }
        else cout << "Votre date est valide !" << endl;
    }
    while (!valide);

    return 0;
}