#include <iostream>
#include<string.h>
using namespace std;
const int CHMAX = 20 ;


void compte (char ch[CHMAX], int &nb_min, int & nb_maj, int &nb_chiffre, int &nb_speciaux)
{
    int i, lg = strlen(ch);
    nb_min=0;
    nb_chiffre=0;
    nb_maj=0;
    nb_speciaux=0;

    for (i=0;i<lg;i++)
    {
        if (ch[i]>='a' && ch[i]<='z') nb_min++;
        else if (ch[i]>='A' && ch[i]<='Z') nb_maj++;
            else if (ch[i]>='0' && ch[i]<='9') nb_chiffre++;
                    else nb_speciaux++;
    }
}

bool verifie_mdp (char ch[CHMAX])
{
    int lg = strlen(ch);
    int minuscules,majuscules, speciaux,chiffres;
    if (lg<8 || lg>CHMAX-1)
        return false;
    else
    {
        compte(ch,minuscules,majuscules,chiffres,speciaux);
        cout<<"Minuscules : "<<minuscules<<endl;
        cout<<"Majuscules : "<<majuscules<<endl;
        cout<<"Chiffres : "<<chiffres<<endl;
        cout<<"Caracteres speciaux : "<<speciaux<<endl;
        if ((minuscules<1) || (majuscules<1) || (chiffres<1)|| (speciaux<1)) return false;
    }
    return true;
}

int main (void)
{
    char mdp[CHMAX];
    do
    {
        cout<<"Saisissez un mot de passe valide"<<endl;
        cin>>mdp;
    } while (verifie_mdp(mdp)==false);
    return 0;
}
