#include "partie2.c"



void mainPart()
{
    int resulScan, v, tmp ;

    //Création des listes :
    LSC *liste_1ToN = malloc(sizeof(*liste_1ToN)) ;
    liste_1ToN->first = NULL ;
    LSC *liste_Fibo = malloc(sizeof(*liste_Fibo)) ;
    liste_Fibo->first = NULL ;

    //Nettoyage de la console :
    system ("CLS") ;

    //Saisie de la taille des listes par l'utilisateur :
    printf ("Longueur des listes ? ") ;
    resulScan = scanf ("%d", &liste_1ToN->taille) ;
    fflush (stdin) ;
    while ( (resulScan != 1) || (liste_1ToN->taille < 1) )
    {
        printf ("\nERREUR : Entree incorrecte !\nLongueur des listes : ") ;
        resulScan = scanf ("%d", &liste_1ToN->taille) ;
        fflush (stdin) ;
    }
    liste_Fibo->taille = liste_1ToN->taille ;

    //Création des listes :
    part1_1_It (liste_1ToN) ; //Création de la liste "1 à n"
    part1_2_It (liste_Fibo) ; //Création de la liste "Fibonacci"

    //Nettoyage de la console :
    system ("CLS") ;

    //Affichage des listes :
    printf ("  Liste ""1 a n"" :\n\n") ;
    part1_3_It (liste_1ToN) ;
    printf ("\n  Liste ""Fibonacci"" :\n\n") ;
    part1_3_It (liste_Fibo) ;

    //Longueur des listes :
    printf ("\n\n\n\n\nListe ""1 a n"" - longueur (mode iteratif) : %d\n", part2_1_It (liste_1ToN->first)) ;
    printf ("Liste ""1 a n"" - longueur (mode recursif) : %d\n", part2_1_Rec (liste_1ToN->first)) ;
    printf ("Liste ""Fibonacci"" - longueur (mode iteratif) : %d\n", part2_1_It (liste_Fibo->first)) ;
    printf ("Liste ""Fibonacci"" - longueur (mode recursif) : %d\n\n", part2_1_Rec (liste_Fibo->first)) ;
    system("PAUSE") ;

    //Recherche d'un element "v" dans les listes :
    printf("\n\n\n\n\nQuel element souhaitez-vous rechercher dans les listes ? ") ;
    resulScan = scanf ("%d", &v) ;
    fflush (stdin) ;
    while (resulScan != 1)
    {
        printf ("\nERREUR : Entree incorrecte !\nQuel element souhaitez-vous rechercher dans les listes ? ") ;
        resulScan = scanf ("%d", &v) ;
        fflush (stdin) ;
    }
    tmp = part2_2_It (liste_1ToN->first, v) ;
    if (tmp == 0) { printf ("\nListe ""1 a n"" - emplacement de l'element (mode iteratif) : inexistant\n") ; }
    else { printf ("\nListe ""1 a n"" - emplacement de l'element (mode iteratif) : maillon %d\n", tmp) ; }
    tmp = part2_2_Rec (liste_1ToN->first, v) ;
    if (tmp == 0) { printf ("Liste ""1 a n"" - emplacement de l'element (mode recursif) : inexistant\n") ; }
    else { printf ("Liste ""1 a n"" - emplacement de l'element (mode recursif) : maillon %d\n", tmp) ; }
    tmp = part2_2_It (liste_Fibo->first, v) ;
    if (tmp == 0) { printf ("Liste ""Fibonacci"" - emplacement de l'element (mode iteratif) : inexistant\n") ; }
    else { printf ("Liste ""Fibonacci"" - emplacement de l'element (mode iteratif) : maillon %d\n", tmp) ; }
    tmp = part2_2_Rec (liste_Fibo->first, v) ;
    if (tmp == 0) { printf ("Liste ""Fibonacci"" - emplacement de l'element (mode recursif) : inexistant\n\n") ; }
    else { printf ("Liste ""Fibonacci"" - emplacement de l'element (mode recursif) : maillon %d\n\n", tmp) ; }
    system("PAUSE") ;

    //Nombre d'occurence d'un élément "v" dans les listes :
    printf("\n\n\n\n\nDe quel element souhaitez-vous compter les occurences dans les listes ? ") ;
    resulScan = scanf ("%d", &v) ;
    fflush (stdin) ;
    while (resulScan != 1)
    {
        printf ("\nERREUR : Entree incorrecte !\nDe quel element souhaitez-vous compter les occurences dans les listes ? ") ;
        resulScan = scanf ("%d", &v) ;
        fflush (stdin) ;
    }
    printf ("\nListe ""1 a n"" - nombre d'occurences de l'element (mode iteratif) : %d\n", part2_3_It (liste_1ToN->first, v)) ;
    printf ("Liste ""1 a n"" - nombre d'occurences de l'element (mode recursif) : %d\n", part2_3_Rec (liste_1ToN->first, v)) ;
    printf ("Liste ""Fibonacci"" - nombre d'occurences de l'element (mode iteratif) : %d\n", part2_3_It (liste_Fibo->first, v)) ;
    printf ("Liste ""Fibonacci"" - nombre d'occurences de l'element (mode recursif) : %d\n\n", part2_3_Rec (liste_Fibo->first, v)) ;
    system("PAUSE") ;

    //Affichage d'un élément sur deux des listes :
    printf ("\n\n\n\n\nListe ""1 a n"" - affichage d'un element sur deux (mode iteratif) :\n") ;
    part2_4_It (liste_1ToN->first) ;
    printf ("Liste ""1 a n"" - affichage d'un element sur deux (mode recursif) :\n") ;
    part2_4_Rec (liste_1ToN->first, 1) ;
    printf ("Liste ""Fibonacci"" - affichage d'un element sur deux (mode iteratif) :\n") ;
    part2_4_It (liste_Fibo->first) ;
    printf ("Liste ""Fibonacci"" - affichage d'un element sur deux (mode recursif) :\n") ;
    part2_4_Rec (liste_Fibo->first, 1) ;
    printf ("\n\n") ;
    system ("PAUSE") ;

    //Croissance des valeurs dans les listes :
    if ( part2_5_It (liste_1ToN->first) ) { printf ("\n\n\n\n\nListe ""1 a n"" - STRICTEMENT croissante (mode iteratif) : oui\n") ; }
    else { printf ("\n\n\n\n\nListe ""1 a n"" - STRICTEMENT croissante (mode iteratif) : non\n") ; }
    if ( part2_5_Rec (liste_1ToN->first) ) { printf ("Liste ""1 a n"" - STRICTEMENT croissante (mode recursif) : oui\n") ; }
    else { printf ("Liste ""1 a n"" - STRICTEMENT croissante (mode recursif) : non\n") ; }
    if ( part2_5_It (liste_Fibo->first) ) { printf ("Liste ""Fibonacci"" - STRICTEMENT croissante (mode iteratif) : oui\n") ; }
    else { printf ("Liste ""Fibonacci"" - STRICTEMENT croissante (mode iteratif) : non\n") ; }
    if ( part2_5_Rec (liste_Fibo->first) ) { printf ("Liste ""Fibonacci"" - STRICTEMENT croissante (mode recursif) : oui\n") ; }
    else { printf ("Liste ""Fibonacci"" - STRICTEMENT croissante (mode recursif) : non\n\n") ; }
    system("PAUSE") ;
}
