#include "declarations.h"

int main ()
{
    liste *nombre1;
    liste *nombre2;
    liste *resultat;
    str_chiffre *ptr_resultat;                 //pour le resultat 
    str_chiffre *ptr_zeros;                 
    affichage_interface();
    char choix=0;
    int i=1;


do
{

    gotoxy(20,10);printf("Choisissez votre op%cration ou fermez en tapant Espace",-126);
    gotoxy(23,13);printf("> Addition ou Soustraction");
    gotoxy(23,14);printf("  Multiplication");
    gotoxy(23,15);printf("  Division");
    gotoxy(23,16);printf("  Factoriel");
    gotoxy(23,17);printf("  Carr%c",-126);
    gotoxy(23,18);printf("  Puissance");
    gotoxy(23,19);printf("  Modulo");

    do
    {

    choix=getch();

    if(choix==72)
    {i--;}
    if(choix==80)
    {i++;}
    if(i==8)i=1;
    if(i==0)i=7;

    if(i==1)
    {gotoxy(20,10);printf("Choisissez votre op%cration",-126);
    gotoxy(23,13);printf("> Addition ou Soustraction");
    gotoxy(23,14);printf("  Multiplication");
    gotoxy(23,15);printf("  Division");
    gotoxy(23,16);printf("  Factoriel");
    gotoxy(23,17);printf("  Carr%c",-126);
    gotoxy(23,18);printf("  Puissance");
    gotoxy(23,19);printf("  Modulo");}
    else if(i==2)
    {gotoxy(20,10);printf("Choisissez votre op%cration",-126);
    gotoxy(23,13);printf("  Addition ou Soustraction");
    gotoxy(23,14);printf("> Multiplication");
    gotoxy(23,15);printf("  Division");
    gotoxy(23,16);printf("  Factoriel");
    gotoxy(23,17);printf("  Carr%c",-126);
    gotoxy(23,18);printf("  Puissance");
    gotoxy(23,19);printf("  Modulo");}
    else if(i==3)
    {gotoxy(20,10);printf("Choisissez votre op%cration",-126);
    gotoxy(23,13);printf("  Addition ou Soustraction");
    gotoxy(23,14);printf("  Multiplication");
    gotoxy(23,15);printf("> Division");
    gotoxy(23,16);printf("  Factoriel");
    gotoxy(23,17);printf("  Carr%c",-126);
    gotoxy(23,18);printf("  Puissance");
    gotoxy(23,19);printf("  Modulo");}
    else if(i==4)
    {gotoxy(20,10);printf("Choisissez votre op%cration",-126);
    gotoxy(23,13);printf("  Addition ou Soustraction");
    gotoxy(23,14);printf("  Multiplication");
    gotoxy(23,15);printf("  Division");
    gotoxy(23,16);printf("> Factoriel");
    gotoxy(23,17);printf("  Carr%c",-126);
    gotoxy(23,18);printf("  Puissance");
    gotoxy(23,19);printf("  Modulo");}
    else if(i==5)
    {gotoxy(20,10);printf("Choisissez votre op%cration",-126);
    gotoxy(23,13);printf("  Addition ou Soustraction");
    gotoxy(23,14);printf("  Multiplication");
    gotoxy(23,15);printf("  Division");
    gotoxy(23,16);printf("  Factoriel");
    gotoxy(23,17);printf("> Carr%c",-126);
    gotoxy(23,18);printf("  Puissance");
    gotoxy(23,19);printf("  Modulo");}
    else if(i==6)
    {gotoxy(20,10);printf("Choisissez votre op%cration",-126);
    gotoxy(23,13);printf("  Addition ou Soustraction");
    gotoxy(23,14);printf("  Multiplication");
    gotoxy(23,15);printf("  Division");
    gotoxy(23,16);printf("  Factoriel");
    gotoxy(23,17);printf("  Carr%c",-126);
    gotoxy(23,18);printf("> Puissance");
    gotoxy(23,19);printf("  Modulo");}
   else if(i==7)
    {gotoxy(20,10);printf("Choisissez votre op%cration",-126);
    gotoxy(23,13);printf("  Addition ou Soustraction");
    gotoxy(23,14);printf("  Multiplication");
    gotoxy(23,15);printf("  Division");
    gotoxy(23,16);printf("  Factoriel");
    gotoxy(23,17);printf("  Carr%c",-126);
    gotoxy(23,18);printf("  Puissance");
    gotoxy(23,19);printf("> Modulo");}

    }while (choix != 13);




    if(i==1)
    {system("cls");gotoxy(35,3);printf("Fonction Addition ou Soustraction\n\n\n");
    nombre1 = fonction_creation_nombre ();
    printf("\n\n");
    nombre2 = fonction_creation_nombre ();
    if (nombre1->signe == '+' && nombre2->signe == '+')
        resultat = fonction_addition(nombre1, nombre2);
    else if (nombre1->signe == '-' && nombre2->signe == '-')
        resultat = fonction_addition(nombre1, nombre2);
    else if (nombre1->signe == '+' && nombre2->signe == '-')
        resultat = fonction_soustraction(nombre1, nombre2);
    else if (nombre1->signe == '-' && nombre2->signe == '+')
        resultat = fonction_soustraction(nombre2, nombre1);
    }

    else if(i==2)
    {system("cls");gotoxy(35,3);printf("Fonction Multiplication\n\n\n");
    nombre1 = fonction_creation_nombre ();
    printf("\n\n");
    nombre2 = fonction_creation_nombre ();
    resultat = fonction_multiplication(nombre1, nombre2);
    }

    else if(i==3)
    {system("cls");gotoxy(35,3);printf("Fonction Division\n\n\n");
    nombre1 = fonction_creation_nombre ();
    printf("\n\n");
    nombre2 = fonction_creation_nombre ();
    resultat = fonction_division(nombre1, nombre2,0);
    }

    else if(i==4)
    {system("cls");gotoxy(35,3);printf("Fonction Factoriel\n\n\n");
    nombre1 = fonction_creation_nombre ();
    resultat = fonction_factoriel(nombre1);
    }

    else if(i==5)
    {system("cls");gotoxy(35,3);printf("Fonction Carr%c\n\n\n",-126);
    nombre1 = fonction_creation_nombre ();
    resultat = fonction_multiplication(nombre1, nombre1);
    }

    else if(i==6)
    {system("cls");gotoxy(35,3);printf("Fonction Puissance\n\n\n");
    nombre1 = fonction_creation_nombre ();
    resultat = fonction_puissance(nombre1);
    }
    else if(i==7)
    {system("cls");gotoxy(35,3);printf("Fonction Modulo\n\n\n");
    nombre1 = fonction_creation_nombre ();
    printf("\n\n");
    nombre2 = fonction_creation_nombre ();
    resultat=fonction_division(nombre1,nombre2,1);
    }




            /////////////    EFFACEMENT DES CHIFFRES EN TROP     /////////////////
    do                                                                          //
    {                                                                           //
        if(resultat->tete->chiffre == 0)                                        //
        {                                                                       //
            ptr_zeros=resultat->tete;                                               //
            resultat->tete = resultat->tete->suiv;                              //
            free(ptr_zeros);                                                        //
        }                                                                       //
    }while(resultat->tete->chiffre == 0);                                       //
                                                                                //
            //////////////////////////////////////////////////////////////////////





    if (i!=3)                                   // pour la division, on affiche pas le resultat retourné (reste)
    {
    /// //////////////////////////////////////   [ AFFICHAGE DU RESULTAT ]    ////////////////////////////////
        printf("\n\nR%csultat =   ",-126);                    //affichage du resultat
        printf("%c",resultat->signe);                                           //affichage du signe
        ptr_resultat=resultat->tete;
        do
        {
                printf("%i", ptr_resultat->chiffre);
                ptr_resultat=ptr_resultat->suiv;

        }while (ptr_resultat != NULL);
    /// ////////////////////////////////////////////////////////////////////////////////////////////////////*/
    }
printf("\n\nTapez 'Escape' pour quitter\n\n");
choix=getch();
system("cls");
}while (choix != 27);




	return 0;
}
