//driver.c
#include <stdio.h>
#include <stdlib.h>
#include "addition.h"
#include "derivation.h"
#include "evaluation.h"
#include "multiplication.h"
#include <conio.c>


/////////////////////////////////////////////////////////////////////////
//Crée le 22/11/2004                                                   //
//Par Balmes regis                                                     //
//    Becker sebastien                                                 //
//                                                                     //
//Objectif: Demande a l utilissateur ce qu'il veut faire               //
//                                                                     //
/////////////////////////////////////////////////////////////////////////

void driver ()
{

     long curseur;
     long nb_M_1,nb_M_2;
     long coef, exp;
     long a;
     long i,j;
     double x,resultat=0;
     ptr_liste L1=NULL;
     ptr_liste L2=NULL;
     ptr_liste Lo=NULL;
     ptr_liste temp;

     printf ("1- Le programme\n");
     printf ("2- Remerciment\n");

     do
     {
       gotoxy(1,3);
       printf("choix:         ");
       gotoxy(8,3);
       scanf("%ld",&curseur);

     }while(curseur!=1 && curseur!=2);

      clrscr();

      switch (curseur){
            case 1:
                   printf ("1- Additionner\n");
                   printf ("2- Multiplier\n");
                   printf ("3- Deriver\n");
                   printf ("4- Calcule en un point donne\n");
                   do{
                        gotoxy(1,5);
                        printf("choix:         ");
                        gotoxy(8,5);
                        scanf("%ld",&curseur);
                   }while(curseur!=1 && curseur !=2 && curseur !=3 && curseur !=4);

                   clrscr();

                   // on creer le premier polynome

                   printf("Nombre de monome(sup a 1 et inf a 10) pour le polynome 1\n");

                   do{
                             gotoxy(1,2);
                             printf("choix:         ");
                             gotoxy(8,2);
                             scanf("%ld",&nb_M_1);
                   }while(nb_M_1<1 || nb_M_1>10);



                   printf("Entrer le polynome 1\n");
                   for(a=1; a<=nb_M_1 ;a++){
                                  printf("   exposant= ");scanf("%ld",&exp);
                                  printf("   coeficient= ");scanf("%ld",&coef);
                                  creePolynome (&L1, coef, exp);
                    }
       

                   // si un deuxieme polynome
                   if(curseur==1 || curseur==2)
                   {
                         clrscr();
       
                         printf("Nombre de monome(sup a 1 et inf a 10) pour le polynome 2\n");
                         do{
                             gotoxy(1,2);
                             printf("choix:         ");
                             gotoxy(8,2);
                             scanf("%ld",&nb_M_2);
                         }while(nb_M_2<1 || nb_M_2>10);
       
                         printf("Entrer le polynome 2\n");

                         for(a=1; a<=nb_M_2 ;a++){
                                  printf("   exposant= ");scanf("%ld",&exp);
                                  printf("   coeficient= ");scanf("%ld",&coef);
                                  creePolynome (&L2, coef, exp);
                         }


                    }
                    clrscr();


                    // travail demander par l utilisateur
                    if(curseur==1) addition_pol(L1,L2,&Lo);

                    else if(curseur==2) multiplication  (L1,L2,&Lo);
       
                    else if(curseur==3) deriv_polynome (L1, &Lo);
       
                    else if(curseur==4){ printf("Entrer un X: ");scanf("%lf",&x);
                                         evaluation_pol(L1, x, &resultat);
                                       }



                    // on affiche le resultat

                   // existe tjrs
                   temp=L1;
                   printf("\nPolynome 1:\n");
                   a=1;
                   while(temp!=NULL)
                   {
                       printf ("\n   monome: %ld ->   coef = %ld  exp = %ld  ",a,temp->coef,temp->exp);
                       temp=temp->suivant;
                       a++;
                   }

                   // si existe
                   if(L2!=NULL){
                          temp=L2;
                          printf("\n\n\n\nPolynome 2:\n");
                          a=1;
                          while(temp!=NULL)
                          {
                               printf ("\n   monome: %ld ->   coef = %ld  exp = %ld  ",a,temp->coef,temp->exp);
                               temp=temp->suivant;
                               a++;
                          }
                   }

                    // Resultat
                    printf("\n\n\n\nPolynome demander:\n");
                    if( curseur == 4) printf("Resultat= %lf",resultat);
                    else {
                         temp=Lo;
                         a=1;
                          while(temp!=NULL)
                         {
                               printf ("\n   monome: %ld ->   coef = %ld  exp = %ld  ",a,temp->coef,temp->exp);
                               temp=temp->suivant;
                               a++;
                         }
                   }

            case 2 :  printf("\n\n\n\nBALMES Regis et BECKER Sebastien\n\n\n\n");break;

      }





}
