#include "ex3.c"


void addBook (livre*) ;
void showBook (livre) ;


void exo2()
{
    int resulScan, nbLivres, i, choix ;
    char info ;
    livre *bibli ;

    //Saisie du nombre de livres à ajouter :
    printf ("\nCombien de livres souhaitez-vous ajouter a la bibliotheque ?\n") ;
    resulScan = scanf ("%d", &nbLivres) ;
    fflush (stdin) ;
    while ( (resulScan != 1) || (nbLivres < 1) )
    {
        printf ("\nERREUR : Entree incorrecte !\nCombien de livres souhaitez-vous ajouter a la bibliotheque ?\n") ;
        resulScan = scanf ("%d", &nbLivres) ;
        fflush (stdin) ;
    }

    //Création de la bibliothèque :
    bibli = malloc (nbLivres * sizeof(livre)) ;

    //Remplissage de la bibliothèque :
    for (i=0 ; i<nbLivres ; i++)
    {
        printf("\n\nLIVRE %d :", i+1) ;
        addBook(&(bibli[i])) ;
    }

    //Affichage des livres :
    do
    {
        printf ("\n\n\nSouhaitez-vous connaitre les details d'un ouvrage en particulier ? (o/n)\n") ;
        resulScan = scanf ("%c", &info) ;
        fflush (stdin) ;
        while ( (resulScan != 1) || ((info != 'o') && (info != 'n')) )
        {
            printf ("\nERREUR : Entree incorrecte !\nSouhaitez-vous connaitre les details d'un ouvrage en particulier ? (o/n)\n") ;
            resulScan = scanf ("%c", &info) ;
            fflush (stdin) ;
        }

        if (info == 'o')
        {
            printf ("\n\n  Choisissez un livre :\n\n") ;
            for (i=0 ; i<nbLivres ; i++)
            {
                printf("%d : %s", i+1, bibli[i].titre) ;
            }
            resulScan = scanf ("%d", &choix) ;
            fflush (stdin) ;
            while ( (resulScan != 1) || (choix < 1) || (choix > nbLivres) )
            {
                printf ("\nERREUR : Entree incorrecte !\nChoisissez le numero d'un livre parmi la liste precedente :\n") ;
                resulScan = scanf ("%d", &choix) ;
                fflush (stdin) ;
            }

            showBook(bibli[choix-1]) ;
        }
    } while (info == 'o') ;
}


void addBook (livre *book) //permet d'ajouter un livre à la bibliothèque
{
    int resulScan ;
    char temp[50] ;

    //Saisie du titre du livre :
    printf ("\n\n  Titre : ") ;
    fgets (temp, 50, stdin) ;
    book->titre = malloc ((strlen(temp)+1) * sizeof(char)) ;
    strcpy (book->titre, temp) ;

    //Saisie du nom de l'auteur :
    printf ("\n  Auteur : ") ;
    fgets (temp, 50, stdin) ;
    book->auteur = malloc ((strlen(temp)+1) * sizeof(char)) ;
    strcpy (book->auteur, temp) ;

    //Saisie de la date de parution du livre :
    printf ("\n  Date de parution : ") ;
    resulScan = scanf ("%d", &book->date) ;
    fflush (stdin) ;
    while (resulScan != 1)
    {
        printf ("\nERREUR : Format incorrect !\n  Date : ") ;
        resulScan = scanf ("%d", &book->date) ;
        fflush (stdin) ;
    }

    //Saisie du prix du livre :
    printf ("\n  Prix : ") ;
    resulScan = scanf ("%f", &book->prix) ;
    fflush (stdin) ;
    while ( (resulScan != 1) || (book->prix < 0) )
    {
        printf ("\nERREUR : Entree incorrecte !\n  Prix : ") ;
        resulScan = scanf ("%f", &book->prix) ;
        fflush (stdin) ;
    }
}


void showBook (livre book)
{
    printf ("\n\nTitre --> %sAuteur --> %sDate de parution --> %d\nPrix indicatif --> %.2f\n\n", book.titre, book.auteur, book.date, book.prix) ;
}
