La resolution d'un system avec la methode de gausse et newton[turbo c++]

Contenu du snippet

C'ete un Tp pour ulistrer le cours des maths
:)
J'attend cos sugestions ;)

Source / Exemple :


#include <graphics.h>
#include <ctype.h>
#include <stream.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <string.h>
union  REGS reg;

void initm()
 {
   reg.x.ax=0x00;
   int86(0x33,&reg,&reg);
 }

void mouse_on(void)
 {
   reg.x.ax=0x01;
   int86(0x33,&reg,&reg);
 }

void mouse_off(void)
 {
   reg.x.ax=0x02;
   int86(0x33,&reg,&reg);
 }

int Xm(void)
 {
   reg.x.ax=0x03;
   int86(0x33,&reg,&reg);
   return(reg.x.cx);
 }

int Ym(void)
 {
   reg.x.ax=0x03;
   int86(0x33,&reg,&reg);
   return(reg.x.dx);
 }

int in_rec(int a,int b,int c,int d)
 {
   if ( ( Xm()<c ) && ( Xm()>a ) && ( Ym()<d ) && ( Ym()>b ) )
     return(1);
   else
     return(0);
 }

int etat(void)
 {
   reg.x.ax=0x03;
   int86(0x33,&reg,&reg);
   return(reg.x.bx);
 }

/*void   BOUTON(int x,int y,int dx,int dy,int col)
 {    int  i;
      setfillstyle(1,col);
      bar(x,y,dx,dy);
      setcolor(15);
      line(x+1,y+1,dx-1,y+1);
      line(x+1,y+1,x+1,dy-1);
      setcolor(0);
      line(x,dy,dx,dy);
      line(dx,y,dx,dy);
      setcolor(8);
      line(x+1,dy-1,dx-1,dy-1);
      line(dx-1,y+1,dx-1,dy-1);
 }*/

void boutton(int x,int y,int z,int w,int c1,int c2,int c3)
 {
  setfillstyle(SOLID_FILL, c3) ;    bar(x,y,z,w) ;
  setcolor(c1) ; line(x,y,z,y) ;    line(x,y,x,w) ;
  setcolor(c2) ; line(x,w,z,w) ;    line(z,y,z,w) ;
 }

void boutton2(int x,int y,int z,int w,int c1,int c2,int c3)
 {
  setfillstyle(INTERLEAVE_FILL, c3) ;    bar(x,y,z,w) ;
  setcolor(c1) ; line(x,y,z,y) ;    line(x,y,x,w) ;
  setcolor(c2) ; line(x,w,z,w) ;    line(z,y,z,w) ;
 }

void boutton3(int x,int y,int z,int w,int c1,int c2)
 {
  setcolor(c1) ; line(x,y,z,y) ;    line(x,y,x,w) ;
  setcolor(c2) ; line(x,w,z,w) ;    line(z,y,z,w) ;
 }

void btn1(int x,int y,int z,int w)
 {
  setfillstyle(SOLID_FILL, 7) ;    bar(x+2,y+2,z-2,w-2) ;
  setcolor(15) ; line(x+1,y+1,z-2,y+1) ;    line(x+1,y+1,x+1,w-2) ;
  setcolor(7) ; line(x,y,z-1,y) ;    line(x,y,x,w-1) ;

  setcolor(8) ; line(z-1,y+1,z-1,w-1) ;    line(x+1,w-1,z-1,w-1) ;
  setcolor(0) ; line(z,y,z,w) ;    line(x,w,z,w) ;

 }

void  btn2(int x,int y,int z,int w)
{
    setcolor(15);rectangle(x,y,z,w);
		 rectangle(x+1,y+1,z,w);
    setcolor(8);rectangle(x,y,z-1,w-1);
}

void btn3(int x,int y,int z,int w)
 {
  setcolor(15) ; line(z,y,z,w) ;    line(x,w,z,w) ;

  setcolor(8) ; line(x,y,z-1,y) ;    line(x,y,x,w-1) ;

 }

void boutton4(int x,int y,int z,int w)
  {
   boutton3(x,y,z,w,8,15);
   boutton(x+1,y+1,z-1,w-1,0,7,15);
  }

void fleche(int y,int z,int w)
 {
   int abc;
   abc=(y+w)/2;
   mouse_off();
   setcolor(0);
   line(z-13,abc-2,z-7,abc-2);
   line(z-12,abc-1,z-8,abc-1);
   line(z-11,abc,z-9,abc);
   line(z-10,abc+1,z-10,abc+1);
   mouse_on();
}

void btn(int y,int z,int w)
{
   mouse_off();
   setfillstyle(1,7);
   bar(z-15,y+4,z-4,w-4);

   setcolor(8);
   line(z-3,y+3,z-3,w-3);
   line(z-16,w-3,z-3,w-3);

   setcolor(15);
   line(z-16,y+3,z-4,y+3);
   line(z-16,y+3,z-16,w-4);

   setcolor(7);
   line(z-17,y+2,z-3,y+2);
   line(z-17,y+2,z-17,w-3);

   setcolor(0);
   line(z-2,y+1,z-2,w-2);
   line(z-17,w-2,z-2,w-2);

   mouse_on();

}

void fermer(int x,int y,int z,int w)
    {
     setfillstyle(1,7);
     bar(x+2,y+2,z,w);
     setcolor(0);
     rectangle(x+1,y+1,z-1,w-1);
     setcolor(8);
     rectangle(x,y,z-1,w-1);

     setcolor(15);
     rectangle(x+1,y+1,z,w);
     setcolor(8);
     rectangle(x,y,z,w);
     setcolor(0);
     line(x+5,y+4,z-5,w-5);
     line(x+5,y+5,z-5,w-4);
     line(x+5,w-5,z-5,y+4);
      line(x+5,w-4,z-5,y+5);
   }

void boutton5(int x,int y,int z,int w)
  {
   mouse_off();
   setfillstyle(1,15);
   bar(x,y,z,w);

      setcolor(8);
   line(x,y,z-1,y);
   line(x,y,x,w-1);

   setcolor(15);
   line(x,w,z,w);
   line(z,y,z,w);

   setcolor(7);
   line(x+1,w-1,z-1,w-1);
   line(z-1,y+1,z-1,w-1);

   setcolor(0);
   line(x+1,y+1,z-2,y+1);
   line(x+1,y+1,x+1,w-2);
   btn(y,z,w);
   fleche(y,z,w);
   mouse_on();
  }

void Couleurs()
 {
   setpalette(6,9);
   setpalette(10,36);
   setpalette(11,38);
   setpalette(14,45);
   setpalette(2,32);
   setpalette(9,8);
 }

void listederoul(int x,int y,int z,int w,int c1)
 {
    int i;
    mouse_off();
    for(i=y;i<w;i++)
    {
	setcolor(0);
	rectangle(x,y,z,i);
	setfillstyle(1,c1);
	bar(x+1,y+1,z-1,i-1);
	if(i<=y+9)
	 delay(7);
	if(i>=y+10 && i<y+18)
	   delay(5);
	else
	  delay(2);
    }
    settextstyle(SMALL_FONT,0,4);
    setcolor(9);
    outtextxy(x+5,y+2,"FACTORISATION");
    outtextxy(x+5,y+15,"METHODE DE NEWTON");
    mouse_on();
 }

void ChoixListeDeroul(int x,int y,int z,int w,int k)
 {
   mouse_off();
   setfillstyle(1,15);
   bar(x+1,y+1,z-1,w-1);
   settextstyle(SMALL_FONT,0,4);
   setcolor(9);
   outtextxy(x+5,y+2,"FACTORISATION");
   outtextxy(x+5,y+15,"METHODE DE NEWTON");

  switch(k)
    {
    case 1 :  setcolor(15);setfillstyle(1,4);
	      bar(x+3,y+2,z-3,y+14); outtextxy(x+5,y+2,"FACTORISATION");
	       break;
    case 2 :  setcolor(15);setfillstyle(1,4);
	      bar(x+3,y+15,z-3,y+27); outtextxy(x+5,y+15,"METHODE DE NEWTON");
	      break;
    }
   mouse_on();
 }

char *Resultat(int k)
 {
   char *p;
   p = (char *)malloc(sizeof(p)) ;
   mouse_off();
   boutton5(230,170,435,192);
   mouse_on();
   settextstyle(SMALL_FONT,0,4);
   setfillstyle(1,15);setcolor(9);
   switch (k)
     {
       case 1 :bar(233,173,416,189);
	       strcpy(p,"FACTORISATION");
	       setcolor(9) ;outtextxy(235,174,"FACTORISATION");
	       break;
       case 2 :bar(233,173,416,189);
	       strcpy(p,"METHODE DE NEWTON");
	       setcolor(9) ; outtextxy(235,174,"METHODE DE NEWTON");
	       break;
     }

  return p;
 }

void Effacer()
 {
   boutton(80,160,170,371,0,15,8);
   setcolor(15) ;
   outtextxy(100,182,"METHODES") ;
   boutton(98,194,148,194,15,15,15) ;
   outtextxy(95,233,"PARAMETRES") ;
   boutton(92,245,155,245,15,15,15) ;
   outtextxy(97,284,"RESULTATS") ;
   boutton(94,296,152,296,15,15,15) ;
   outtextxy(102,336,"EFFACER") ;
   boutton(98,348,147,348,15,15,15) ;
   boutton(81,385,489,405,15,0,7);
 }

void Interface()
 {
   setpalette(4,29);
   setpalette(9,8) ;
   settextstyle(SMALL_FONT,0,4);
   setfillstyle(10,1);
   bar(0,0,645,480);
   boutton(60,80,580,420,15,15,7);
   boutton(61,80,579,419,15,15,7);
   boutton(63,83,577,103,8,8,8);
   boutton(80,110,318,130,0,15,7);
   boutton(81,111,159,129,15,0,7);
   boutton(160,111,238,129,15,0,7);
   boutton(239,111,317,129,15,0,7);
   setcolor(9) ;
   outtextxy(95,115,"A PROPOS") ;
   outtextxy(175,115,"METHODES") ;
   outtextxy(258,115,"QUITTER") ;
   fermer(556,85,571,101);
   setcolor(15) ; outtextxy(70,88,"ANALYSE NUMERIQUE ... TP2") ;
   Effacer() ;
   boutton4(200,160,560,370) ;
   boutton(80,384,560,406,0,15,7);
   boutton(81,385,489,405,15,0,7);
   outtextxy(300,390,"Commandes : ") ;
 }

void Date(int x , int y)
 {
   struct date D ;
   getdate(&D);
   char CH[6] ;
   setpalette(6,5);
   setcolor(6);
   sprintf(CH,"%d",D.da_day) ; outtextxy(x,y,CH) ;
   sprintf(CH,"%d",D.da_mon) ; outtextxy(x+15,y,CH) ;
   sprintf(CH,"%d",D.da_year) ; outtextxy(x+30,y,CH) ;
 }

void Time(int x , int y)
 {
   struct time t;
   static  char s[10];
   static sec=0;
   gettime(&t);
   if ( sec != t.ti_sec )
     {
       setcolor(7);
       boutton(490,385,559,405,15,0,7);
       outtextxy(x,y,s);
       sprintf(s," %2d:%02d:%02d",t.ti_hour, t.ti_min, t.ti_sec);
       setcolor(1);
       boutton(490,385,559,405,15,0,7);
       outtextxy(x,y,s);
       sec=t.ti_sec;
     }
 }

void ChoixMenu(int k)
 {
   setpalette(5,32) ;
   switch(k)
      {
	 case 1 :  Effacer() ; boutton(81,161,169,212,15,0,7);
		   outtextxy(100,182,"METHODES") ;  setcolor(5) ;
		   outtextxy(93,390,"Le Choix Du M‚thodes") ;
		   break ;
	 case 2 :  Effacer() ; boutton(81,213,169,266,15,0,7);
		   outtextxy(95,233,"PARAMETRES") ; setcolor(5) ;
		   outtextxy(93,390,"La Saisie Des ParamŠtres") ;
		   break ;
	 case 3 :  Effacer() ; boutton(81,267,169,319,15,0,7);
		   outtextxy(100,284,"RESULTATS") ; setcolor(5) ;
		   outtextxy(93,390,"La Solution Du Systeme Ou De L'Equation") ;
		   break ;
	 case 4 :  Effacer() ; boutton(81,320,169,370,15,0,7);
		   outtextxy(100,336,"EFFACER") ; setcolor(5) ;
		   outtextxy(93,390,"Effacer") ;
		   break ;
      }
 }

void MenuMethode()
 {
   boutton(160,132,310,204,15,0,7);
   boutton(165,135,185,199,8,8,8);
   setcolor(7);
   settextstyle(SMALL_FONT,1,4);
   outtextxy(169,144,"METHODES");
   settextstyle(SMALL_FONT,0,4);
   setcolor(15);
   outtextxy(196,142,"Factorisation");
   outtextxy(196,162,"M‚thode De GAUSS");
   outtextxy(196,182,"M‚thode De NEWTON");
 }

void EffaceMenuMethode()
 {
   boutton(190,139,300,198,7,7,7) ;
   settextstyle(SMALL_FONT,0,4);
   setcolor(15);
   outtextxy(196,142,"Factorisation");
   outtextxy(196,162,"M‚thode De GAUSS");
   outtextxy(196,182,"M‚thode De NEWTON");
 }

void ChoixMethode(int k)
 {
   switch(k)
      {
	case 1 : EffaceMenuMethode() ; boutton(191,139,300,157,8,8,8) ;
		 setcolor(15) ; outtextxy(196,142,"Factorisation");
		 break ;
	case 2 : EffaceMenuMethode() ;boutton(191,159,300,177,8,8,8) ;
		 setcolor(15) ; outtextxy(196,162,"M‚thode De GAUSS");
		 break ;
	case 3 : EffaceMenuMethode() ;boutton(191,179,300,197,8,8,8) ;
		 setcolor(15) ; outtextxy(196,182,"M‚thode De NEWTON");
		 break ;
      }
 }

void Efface2()
 {
   boutton(70,131,570,372,7,7,7);
   boutton4(200,160,560,370) ;
   Effacer() ;
 }

void Titre(char Ch[])
 {
   int i ;
   settextstyle(TRIPLEX_FONT,0,3) ;
   for ( i=0 ; i<5 ; i++ )
      {
	setcolor(0) ;
	outtextxy(380-i,120+i,Ch) ;
      }
   setcolor(15) ;
   outtextxy(380-i,120+i,Ch) ;
   settextstyle(SMALL_FONT,0,4) ;
 }

int Methode()
 {
   int k=0 , L=0  ;
   char P ;
   MenuMethode() ;
   while (k!=5)
	{
	  Date(490,165) ;
	  while ( Time(495,390) , !kbhit()) ;
	  P=getch();
	  switch(P)
	    {
	       case 80 :  k++; if(k>3) k=1; ChoixMethode(k);
			  break;
	       case 72 :  k--; if(k<1) k=3; ChoixMethode(k);
			  break ;
	       case 13 :  switch(k)
				    {
				      case 1 : L = 1 ; k = 5 ; Efface2();
					       Titre("FACTORISATION") ;break ;
				      case 2 : L = 2 ; k = 5 ; Efface2() ;
					      Titre("M . GAUSS") ; break ;
				      case 3 : L = 3 ; k = 5 ; Efface2() ;
				      Titre("M . NEWTON") ; break ;
				    }
			  break ;
	       case 27 :
	       case 75 :
	       case 77 : k = 5 ; break ;
	     }
	}
   return L ;
 }

void EffaceMenu_P()
 {
   boutton(81,111,159,129,15,0,7);
   boutton(160,111,238,129,15,0,7);
   boutton(239,111,317,129,15,0,7);
   setcolor(9) ;
   outtextxy(95,115,"A PROPOS") ;
   outtextxy(175,115,"METHODES") ;
   outtextxy(258,115,"QUITTER") ;
 }

void ChoixMenu_P(int k)
 {
   switch(k)
      {
	case 1 : EffaceMenu_P() ; boutton(81,111,159,129,0,15,7);
		 outtextxy(95,115,"A PROPOS") ;
		 break ;
	case 2 : EffaceMenu_P() ; boutton(160,111,238,129,0,15,7);
		 outtextxy(175,115,"METHODES") ;
		 break ;
	case 3 : EffaceMenu_P() ; boutton(239,111,317,129,0,15,7);
		 outtextxy(258,115,"QUITTER") ;
		 break ;
      }
 }

int Menu_P()
 {
   int k=0 , L  ;
   char P ;
   while (k!=5)
	{
	  Date(490,165) ;
	  while ( Time(495,390) , !kbhit() ) ;
	  P=getch();
	  switch(P)
		{
		  case 77 :  k++; if(k>3) k=1; ChoixMenu_P(k);
			     break;
		  case 75 :  k--; if(k<1) k=3; ChoixMenu_P(k);
			     break ;
		  case 13 :  switch(k)
			       {
				 case 2 : L = Methode() ; k=5 ; break ;
				 case 3 : k=5 ; break ;
			       }
			     break ;
		  case 27 :  k = 5 ;
			     break ;
		}
	    }
   return L ;
 }

void main()
 {
   int E = DETECT , F ;
   initgraph(&E,&F,"C:\\Tc") ;
   int k=0 , L  ;
   char P ;
   initm() ;
   Interface() ;
   L = Menu_P() ;
   if ( L == 1 || L == 2 || L == 3 )
     {
       while (k!=5)
	    {
	      Date(490,165) ;
	      while ( Time(495,390) , !kbhit() ) ;
	      P=getch();
	      switch(P)
		{
		  case 80 :  k++; if(k>4) k=1; ChoixMenu(k);
			     break;
		  case 72 :  k--; if(k<1) k=4; ChoixMenu(k);
			     break ;
		  case 27 :  k = 5 ;
			     break ;
		}
	    }
     }
   closegraph() ;
 }

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.