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

struct mot
{
    char m[CHMAX];
    int nb_syllabes;
};

struct vers
{
    struct mot tab_mots[MAX_MOTS];
    int nb_pieds;
    int nb_mots;

};

void remplir_mot(struct mot &mt)
{
    cout<<"donnez un mot"<<endl;
    cin>>mt.m;
    cout<<"donnez le nombre de syllabes de ce mot"<<endl;
    cin>>mt.nb_syllabes;
}

struct vers remplir_vers ()
{
    struct vers v;
    int i;
    do
    {
        cout<<"donnez un ver de 12 pieds"<<endl;
        v.nb_mots = 0;
        v.nb_pieds = 0 ;
        i=0;
        do
        {
            remplir_mot( v.tab_mots[i]);
            v.nb_pieds +=v.tab_mots[i].nb_syllabes;
            i++;
        } while (v.nb_pieds<12);
    } while (v.nb_pieds!=12);
    return v;

}

void genere_acrostiche (struct vers tab_vers[CHMAX], char chaine[CHMAX])
{
    int lg = strlen(chaine);
    int i;
    for (i=0;i<lg;i++)
    {
        do
        {
             tab_vers[i] = remplir_vers();
        } while (tab_vers[i].tab_mots[0].m[0] != chaine[i]);


    }
}

void affiche_acrostiche (struct vers tab_vers[CHMAX], int lg)
{
     int i,j;
     for (i=0;i<lg;i++)
     {
         for (j=0;j<tab_vers[i].nb_mots; j++)
         {
             cout<<tab_vers[i].tab_mots[j].m<<endl;
         }
         cout<<endl;
     }
}

int main (void)
{
    struct vers acro[CHMAX];
    char mot_acro[CHMAX];
    cout<<"donnez le mot"<<endl;
    cin>>mot_acro;
    genere_acrostiche(acro, mot_acro);
    affiche_acrostiche(acro,strlen(mot_acro));
  return 0;
}
