π
<-

[TIGCC] calcul formel

Programmation et implémentation d'algorithmes.

Re: [TIGCC] calcul formel

Unread postby nikovitchi » 13 Dec 2014, 20:54

Bisam wrote:"dialogs" = Boîtes de dialogue du langage TI-Basic.

Ok, d'accord mais des boîtes de dialogue pour faire quoi ? ^^
User avatar
nikovitchi
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 80%
 
Posts: 13
Joined: 13 Dec 2014, 11:00
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: [TIGCC] calcul formel

Unread postby Lionel Debroux » 13 Dec 2014, 21:01

Pour rentrer les noms des variables à remplacer et les valeurs par lesquelles les remplacer :)
Ca semble nettement plus pratique que:
* passer 20-40 arguments au programme directement ou dans une liste;
* entrer les arguments un par un, surtout si, en sus, tu veux pouvoir revenir plus haut pour corriger des erreurs. Les dialogs permettent de passer facilement d'un champ à l'autre.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.4%
 
Posts: 6873
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: [TIGCC] calcul formel

Unread postby nikovitchi » 13 Dec 2014, 21:08

oui je comprend sauf que les noms des variables je les inscrits moi même dans le code, l'utilisateur n'a qu'à rentré leurs valeur =) oui j'utilisré surement des boites de dialogue pour faire mais pas pour les nom des variables =)
User avatar
nikovitchi
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 80%
 
Posts: 13
Joined: 13 Dec 2014, 11:00
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: [TIGCC] calcul formel

Unread postby nikovitchi » 13 Dec 2014, 21:16

SVP Mr Lionel, j'aimerai bien que vous me donniez un exemple d'utilisation de la fonction push_substitute_no_simplify j'ai fouillé par ci et par là mais j'ai trouver des exemples que je trouve très difficile a déchiffrer en plus la documentation indique que la fonction n'a pas encore était "crée" :(
User avatar
nikovitchi
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 80%
 
Posts: 13
Joined: 13 Dec 2014, 11:00
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: [TIGCC] calcul formel

Unread postby Lionel Debroux » 13 Dec 2014, 21:24

Les trois paramètres des trois fonctions push_substitute_* sont les mêmes à ma connaissance, respectivement:
* l'expression dans laquelle il faut remplacer, en représentation interne. Pour toi, elle se trouvera à top_estack après push_parse_text(), si push_parse_text() a réussi, bien sûr;
* le nom de la variable à remplacer, en encodage CAS, autrement dit des tags spéciaux pour les variables A-Z, ou 0x00 nom 0x00 pour les variables de 2 caractères et plus. Voir l'enum Tags dans estack.h; les octets représentant les variables sont dans un ordre... curieux, mais c'est ainsii;
* la valeur par laquelle remplacer, toujours en représentation interne, issue de push_parse_text().
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.4%
 
Posts: 6873
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: [TIGCC] calcul formel

Unread postby nikovitchi » 13 Dec 2014, 21:30

merci :) j'irai tester ça et je vous rend la réponse a très bientôt merci Mr
User avatar
nikovitchi
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 80%
 
Posts: 13
Joined: 13 Dec 2014, 11:00
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: [TIGCC] calcul formel

Unread postby nikovitchi » 17 Dec 2014, 20:46

Bonjour, je suis là d'abord pour vous remercier pour votre aide c'était très sympa de votre part, aussi pour vous montrer mon code "pour la formule" qui est un peu "peut être trop pour vous" mal organisé ^^.

j'aurais aimé que vous m'aidiez a corriger mes erreurs, peut être optimiser le code un peu (même que pour l'instant j'ai aucun problème de vitesse d’exécution ).

j'aimerai aussi vous poser une autre question a propos de la fonction -WinClr- que je veux remplacer par une autre qui n'efface que la partie de l’écran qui est occuper par la formule


voici le code
Code: Select all
#include <tigcclib.h> // Include All Header Files

void formule(const char *form);
char *var[20];
const char *var_name[20];

void _main(void)

  //////////////dialog//////////////////
   
   
  char varia[30];
  HANDLE handle = DialogNewSimple (150, 90);
  DialogAddTitle (handle, "inconnu", BT_OK, BT_CANCEL);
  DialogAddText (handle, 15 , 15, "Carect.Geom");
  DialogAddRequest (handle, 10, 30, "x", 0, 10, 8);
  DialogAddRequest (handle, 10, 40, "y", 10, 10, 8);
  DialogAddRequest (handle, 10, 50, "Z", 20, 10, 8);
  if (DialogDo (handle, CENTER, CENTER, varia, NULL) == KEY_ENTER)
 
 
  ////////////////entré des tableaux de variables/nom variables /////////
  var[0]=varia;
  var_name[0]="X";
 
  var[1]=varia+10;
  var_name[1]="Y";
 
  var[2]=varia+20;
  var_name[2]="Z";
  /////////////////EXEMPLE "LA FORMULE"////////////////
 
 
  formule("root((X+1/(3+y)+2+(5Y)+Z/(1+x))^(2),2)");
   
   

}
////////////////////la fonction qui affiche la formule en 3 etapes///////////////////

void formule(const char *form)
{
   int pos=0,key=0 ;
   
   
   
  TRY
// affichage de la formule  ////////////////
do
  {
    push_parse_text (form);
    WinClr (DeskTop);
    Print2DExpr (Parse2DExpr (top_estack, FALSE), DeskTop, pos, 50);
     key = ngetchx();
     if (key ==344)
     pos = pos-40;
     if (key ==338)
     pos = pos+40;
   }
while (key != 264);
// affichage apres avoir remplacer /////////////////////
   
    push_parse_text (form);
    ESI expression = top_estack;
    ESI varr;       
do
  {
    int I=0;
    for (I=0;I<3;I++)
    {
    push_parse_text (var_name[I]);
    varr = top_estack;
    push_parse_text (var[I]);
    push_substitute_no_simplify (expression,varr,top_estack);
    expression = top_estack;
    }
    WinClr (DeskTop);
    Print2DExpr (Parse2DExpr (top_estack, FALSE), DeskTop, pos, 50);
     key = ngetchx();
     if (key ==344)
     pos = pos-40;
     if (key ==338)
     pos = pos+40;
   }
while (key != 264);
// calcule numerique /////////////////////////////
   
   
   push_parse_text ("12");
   push_substitute_simplify (expression,(ESQ []){VAR_Y_TAG},top_estack);
   NG_approxESI (top_estack);
   WinClr(DeskTop);
   Print2DExpr (Parse2DExpr (top_estack, FALSE), DeskTop, 0, 50);
   ngetchx();
   
  ONERR
    DrawStr (20, 20, "Error!", A_NORMAL);
  ENDTRY
}


Merci d'avance =)
User avatar
nikovitchi
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 80%
 
Posts: 13
Joined: 13 Dec 2014, 11:00
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: [TIGCC] calcul formel

Unread postby Lionel Debroux » 18 Dec 2014, 21:37

OK, il faudra que j'essaie ton code.

264 -> KEY_ESC ;)
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.4%
 
Posts: 6873
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: [TIGCC] calcul formel

Unread postby nikovitchi » 18 Dec 2014, 22:01

Lionel Debroux wrote:
264 -> KEY_ESC ;)


c'est fait, j'ai ajouter "KEY_ENTER" aussi =)


j'ai oublier aussi en bas de changer
Code: Select all

push_parse_text ("12");
push_substitute_simplify (expression,(ESQ []){VAR_Y_TAG},top_estack);

par
Code: Select all
push_internal_simplify(expression);


c’était juste un truc que j'avais écrit pour tester :p
User avatar
nikovitchi
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 80%
 
Posts: 13
Joined: 13 Dec 2014, 11:00
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: [TIGCC] calcul formel

Unread postby nikovitchi » 23 Dec 2014, 20:03

Bonsoir, SVP aidez moiii :'(

J'ai combattue pour réussir a faire marcher ce code, mais après compilation la calculatrice crash soit par "error: memory" ou bien "address error" j'ai tout essayé je crois que ça a une relation avec les allocation de mémoire, sauf que moi je maîtrise pas vraiment. si vous partagez mon avis expliquer moi comment ça marche les allocation dynamique "pweaase :("

SVP je vous en serait reconnaissant :?

voici le code
Code: Select all
#include <tigcclib.h> // Include All Header Files


int J=0;
void formule(const char *form,const char *qac,const int etape);
char *var[40]={};
const char *var_name[40]={};
ESI newvar[40]={},newvar_name[40]={};
WINDOW myWin;
WIN_RECT wa;

void _main(void)

HANDLE handle = PopupNew ("DONNEE", 40);
  PopupAddText (handle, 0, "effort normal", 0);
  PopupAddText (handle, 0, "Flexion simple ", 0);
  PopupAddText (handle, 0, "Flexion composé", 0);
  PopupAddText (handle, 1, "traction", 1);
  PopupAddText (handle, 1, "compression", 2);
  PopupAddText (handle, 2, "Non-Devié", 3);
  PopupAddText (handle, 2, "Devié", 4);
  PopupAddText (handle, 3, "Non-Devié", 5);
  PopupAddText (handle, 3, "Devié", 6);
  HANDLE exec_handle1 = PopupBegin (handle, 0);
  short solli = PopupBeginDo (exec_handle1, CENTER, CENTER, 0);
  push_longint (solli);
  MenuEnd (exec_handle1);
  /////////////////////////////////
  handle = PopupNew ("CLASSE", 50);
  PopupAddText (handle, -1, "CLASSE 1", 1);
  PopupAddText (handle, -1, "CLASSE 2", 2);
  PopupAddText (handle, -1, "CLASSE 3", 3);
  PopupAddText (handle, -1, "CLASSE 4", 4);
  HANDLE exec_handle2 = PopupBegin (handle, 0);
  short classe = PopupBeginDo (exec_handle2, CENTER, CENTER, 0);
  push_longint (classe);
  MenuEnd (exec_handle2 );
  ////////////////dialog////////////
 
char BUFFER[130]="";
   handle = DialogNewSimple (160, 90);
  DialogAddTitle (handle, "Carect.Geom", BT_OK, BT_CANCEL);
  DialogAddRequest (handle, 1, 20, "iy[cm]:", 0, 10, 6);
  DialogAddRequest (handle, 1, 30, "iz[cm]:", 10, 10, 6);
  DialogAddRequest (handle, 0, 40, "L0[cm]:", 20, 10, 6);
  DialogAddRequest (handle, 1, 50, "H[mm]:", 30, 10, 6);
  DialogAddRequest (handle, 1, 60, "B[mm]:", 40, 10, 6);
  DialogAddRequest (handle, 0, 70, "tf[mm]:", 50, 10, 6);
  DialogAddRequest (handle, 70, 20, "Wely[cm³]:", 60, 10, 6);
  DialogAddRequest (handle, 70, 30, "Welz[cm³]:", 70, 10, 6);
  DialogAddRequest (handle, 70, 40, "Wply[cm³]:", 80, 10, 6);
  DialogAddRequest (handle, 70, 50, "Wplz[cm³]:", 90, 10, 6);
  DialogAddRequest (handle, 70, 60, "A       [cm²]:", 100, 10, 6);
  DialogAddRequest (handle, 70, 70, "fy     [MPa]:", 110, 10, 6);
  if (DialogDo (handle, CENTER, CENTER, BUFFER, NULL) == KEY_ENTER)
  HeapFree (handle);
//////////////////////////////////////////////////////////////////////////

  ////////////////entré des tableaux de variables/nom variables /////////
  var[0]=BUFFER;
  var_name[0]="iy";
 
  var[1]=BUFFER+10;
  var_name[1]="iz";
 
  var[2]=BUFFER+20;
  var_name[2]="L0";
 
  var[3]=BUFFER+30;
  var_name[3]="h";
 
  var[4]=BUFFER+40;
  var_name[4]="b";
 
  var[5]=BUFFER+50;
  var_name[5]="tf";
 
  var[6]=BUFFER+60;
  var_name[6]="Wely";
 
  var[7]=BUFFER+70;
  var_name[7]="Welz";
 
  var[8]=BUFFER+80;
  var_name[8]="Wply";
 
  var[9]=BUFFER+90;
  var_name[9]="Wplz";
 
  var[10]=BUFFER+100;
  var_name[10]="A";
 
  var[11]=BUFFER+110;
  var_name[11]="fy";
 
 
  /////////////////////////////////////////////////////
   wa.x0=0; wa.x1=160; wa.y0=0 ; wa.y1=100;
   WinOpen (&myWin, &wa, WF_NOBORDER);
   
/////////////////SOLLUTION///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
   clrscr();
   printf("\n\n\n\n\n\n\n\n\n\n\n\n");
   TRY
   //////////traction///////
   if (solli==1)
   {
      printf("a");
      ngetchx();
   }
   /////////compression/////
   if (solli==2)
   {
                
   }
   /////////flexion simple//////
   if (solli==3)
   {
                
   }
  //////////flexion devié//////
  if (solli==4)
   {
                
   }
   /////////flexion composé///////
   if (solli==5)
   {
                
   }
   /////////flexion composé devié/////
   if (solli==6)
   {
   char BUFFER1[100]="";   
   handle = DialogNewSimple (150, 90);
  DialogAddTitle (handle, "solicitation", BT_OK, BT_CANCEL);
  DialogAddRequest (handle, 10, 30, "Nsd  ", 0, 10, 8);
  DialogAddRequest (handle, 10, 40, "Mysd", 10, 10, 8);
  DialogAddRequest (handle, 10, 50, "Mzsd", 20, 10, 8);
  if (DialogDo (handle, CENTER, CENTER, BUFFER1, NULL) == KEY_ENTER)
  HeapFree (handle);
 
  var[12]=BUFFER1;
  var_name[12]="Nsd";
 
  var[13]=BUFFER1+10;
  var_name[13]="Mysd";

  var[14]=BUFFER1+20;
  var_name[14]="Mzsd";
 
  char varchar1[10],varchar2[10],varchar3[10],varchar4[10];
 
      handle = PopupNew ("AXE-Y-", 50);
  PopupAddText (handle, -1, "bi-apuié", 10);
  PopupAddText (handle, -1, "bi-encastré", 5);
  PopupAddText (handle, -1, "encastré", 20);
  PopupAddText (handle, -1, "encastr-apuié", 7);
  HANDLE exec_handle3 = PopupBegin (handle, 0);
  double lfy = PopupBeginDo (exec_handle3, CENTER, CENTER, 0);
  push_longint (lfy);
  MenuEnd (exec_handle3 );

 
  lfy=lfy/10;
  var_name[15]="lfy";
  sprintf (varchar1, "%f*L0",lfy);
  var[15]=varchar1;
 
   handle = PopupNew ("AXE-Z-", 50);
  PopupAddText (handle, -1, "bi-apuié", 10);
  PopupAddText (handle, -1, "bi-encastré", 5);
  PopupAddText (handle, -1, "encastré", 20);
  PopupAddText (handle, -1, "encastr-apuié", 7);
  HANDLE exec_handle4 = PopupBegin (handle, 0);
  double lfz = PopupBeginDo (exec_handle4, CENTER, CENTER, 0);
  push_longint (lfz);
  MenuEnd (exec_handle4 );
 
 
  lfz=lfz/10; 
  var_name[16]="lfz";
  sprintf (varchar2, "%f*L0",lfz);
  var[16]=varchar2;
 
 
      printf("\ntype de solicitation:\n");
      printf("flexion composé deviée\n---------------------");
      printf("\nsection de classe: %d \n -> AN plastique\n-------------------",classe);
      ngetchx();
      formule("(Nsd/(“min*((A*Fy)/ƒM1))+((Ky*Mysd)/(Wply*(fy/(ƒM1))))+((Kz*Mzsd)/(Wplz*(fy/(ƒM1)))))<1","none",1);
      printf("\n--------------------");
      
      printf("\nCalcule de coefficients");
      printf("\n--------------------");
      formule("“min=min(“y,“z)","none",1);
      
      printf("\nOn a lfy=%f*L0 donc:",lfy);
      formule("‰y=lfy/iy","‰y",3);
      formule("‰bary=‰y/93.3","‰bary",3);
      ///a revoir
      printf("\nOn a lfz=%f*L0 donc:",lfz);
      formule("‰z=lfz/iz","‰z",3);
      formule("‰barz=‰z/93.3","‰barz",3);
      
       float h=atof (var[3]),b=atof (var[4]),tf=atof (var[5]);
      
       printf("\nh= %.2f",h);
      formule("h/b","none",3);
      ////a revoir tableau
      if ((h/b)>1.2)
          {
           if (tf<=40)
           {
           printf("\naxe y-y ->courbe(a) €=0.21\naxe z-z ->courbe(b) €=0.34");
           sprintf (varchar3, "%f",0.21);var_name[15]="€y";
           sprintf (varchar4, "%f",0.34);var_name[16]="€z";
           var[15]=varchar3;var[16]=varchar4;
           }
           if (tf>40 && tf<=100) 
           {
           printf("\naxe y-y ->courbe(b) €=0.34\naxe z-z ->courbe(c) €=0.49");
           sprintf (varchar3, "%f",0.34);var_name[15]="€y";
           sprintf (varchar4, "%f",0.49);var_name[16]="€z"; 
           var[15]=varchar3;var[16]=varchar4;        
           }
          
          }
          else
          {
           if (tf<=40)
           {
           printf("\naxe y-y ->courbe(b) €=0.34\naxe z-z ->courbe(c) €=0.49");
           sprintf (varchar3, "%f",0.34);var_name[15]="€y";
           sprintf (varchar4, "%f",0.49);var_name[16]="€z";   
           var[15]=varchar3;var[16]=varchar4;
           }
          
          
           if (tf>40 && tf<=100)
           {
           printf("\naxe y-y ->courbe(d) €=0.34\naxe z-z ->courbe(d) €=0.34");
           sprintf (varchar3, "%f",0.34);var_name[15]="€y";
           sprintf (varchar4, "%f",0.34);var_name[16]="€z";
           var[15]=varchar3;var[16]=varchar4;
           }
          
          }
 
 
  formule("‘y=0.5*(1+€y*(‰bary-0.2)+‰bary^2)","‘y",3);
  formule("“y=1/(‘y+¨(‘y^2-‰bary^2))","“y",3);
 
  formule("‘z=0.5*(1+€z*(‰barz-0.2)+‰barz^2)","‘z",3);
  formule("“z=1/(‘z+¨(‘z^2-‰barz^2))","“z",3);
 
  formule("“min=min(“y,“z)","“min",3);
 
 
  char BUFFER2[40]="";
  handle = DialogNewSimple (100, 90);
  DialogAddTitle (handle, "My", BT_OK, BT_NONE);
  DialogAddRequest (handle, 10, 30, "M’y", 0, 10, 8);
  DialogAddRequest (handle, 10, 40, "MQy", 10, 10, 8);
  DialogAddRequest (handle, 10, 50, "MQy", 20, 10, 8);
  DialogAddRequest (handle, 10, 60, "„My", 30, 10, 8);
  if (DialogDo (handle, CENTER, CENTER, BUFFER2, NULL) == KEY_ENTER)
 
 
  var[17]=BUFFER2;
  var_name[17]="M’y";
 
  var[18]=BUFFER2+10;
  var_name[18]="MQy";
 
  var[19]=BUFFER2+20;
  var_name[19]="MQy";
 
  var[20]=BUFFER2+30;
  var_name[20]="„My";
 
  char BUFFER3[40]="";
  handle = DialogNewSimple (100, 90);
  DialogAddTitle (handle, "Mz", BT_OK, BT_NONE);
  DialogAddRequest (handle, 10, 30, "M’z", 0, 10, 8);
  DialogAddRequest (handle, 10, 40, "MQz", 10, 10, 8);
  DialogAddRequest (handle, 10, 50, "MQz", 20, 10, 8);
  DialogAddRequest (handle, 10, 60, "„Mz", 30, 10, 8);
  if (DialogDo (handle, CENTER, CENTER, BUFFER3, NULL) == KEY_ENTER)
  HeapFree (handle);
 
  var[21]=BUFFER3;
  var_name[21]="M’z";
 
  var[22]=BUFFER3+10;
  var_name[22]="MQz";
 
  var[23]=BUFFER3+20;
  var_name[23]="MQz";
 
  var[24]=BUFFER3+30;
  var_name[24]="„Mz";
   
  formule("My=M’y+(MQy/„My)*(MQy-M’y)","My",3);
  formule("µy=‰bary*(2*My-4)+(Wply-Wely)/Wely","µy",3);
  formule("Ky=1-(µy*Nsd*10^2)/(“y*A*fy)","Ky",3);
 
  formule("Mz=M’z+(MQz/„Mz)*(MQz-M’z)","Mz",3);
  formule("µz=‰barz*(2*Mz-4)+(Wplz-Welz)/Welz","µz",3);
  formule("Kz=1-(µz*Nsd*10^2)/(“z*A*fy)","Kz",3);
 

  formule("Vrf=(Nsd/(“min*((A*fy)/1.1))+((Ky*Mysd)/(Wply*(fy/(1.1))))+((Kz*Mzsd)/(Wplz*(fy/(1.1)))))","none",3);
  formule("Vrf<1","none",3);
   
      ngetchx();
              
   }
   

   
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  WinClose (&myWin);
  ONERR
 
  ENDTRY
  //////////////////////////////////////////////////////////////
}



////////////////////la fonction qui affiche la formule en 3 etapes///////////////////

void formule(const char *form,const char *qac, const int etape)
{

   
   
    push_parse_text (form);
    ESI expression = top_estack;
    ESI nomvar,old_top;
    old_top=top_estack; 

   int pos=0,key=0,I=0;
   WORD Width, Depth, Height;
   push_parse_text (form);
   Parms2D(Parse2DExpr (top_estack, FALSE), &Width, &Depth, &Height );
   
   WinScrollV(&myWin, &wa, 15+(Height+Depth));
   
   WIN_RECT wr;
   wr.x0=0; wr.x1=160; wr.y0=79-(Height+Depth) ; wr.y1=100;
   
   
   
     
TRY
// affichage de la formule  ///////////////////
do
  {
    push_parse_text (form);
    WinFill(&myWin,&wr,A_REVERSE);
    Print2DExpr (Parse2DExpr (top_estack, FALSE), &myWin, pos,80-Depth);
    key = ngetchx();
    if (Width>100)
    {
     if (key ==344)
     {
     if (pos > -121)
     pos=pos-40;   
     }
     
     if (key ==338)
     {
     if (pos < 0)   
     pos = pos+40;
        
     }
         
    }
   
  }
while (key !=KEY_ESC && key !=KEY_ENTER);
 
 
// affichage apres avoir remplacer /////////////////////


if (etape>=2)
{
       
   pos=0;
  WinScrollV(&myWin,&wa ,5+Height+Depth); 
   
    for (I=0;I<30;I++)
    {
    push_parse_text (var_name[I]);
    nomvar = top_estack;
    push_parse_text (var[I]);
    push_substitute_no_simplify (expression,nomvar,top_estack);
    expression = top_estack;
    }
    for (I=0;I<30;I++)
    {
    push_parse_text (var_name[I]);
    nomvar = top_estack;
    push_parse_text (var[I]);
    push_substitute_no_simplify (expression,nomvar,top_estack);
    expression = top_estack;
    }
   
    for (I=0;I<J;I++)
    {
    push_substitute_no_simplify (expression,newvar_name[I],newvar[I]);
    expression = top_estack;
    }
    for (I=0;I<J;I++)
    {
    push_substitute_no_simplify (expression,newvar_name[I],newvar[I]);
    expression = top_estack;
    }
   
do
  {
   
    WinFill(&myWin,&wr,A_REVERSE);
    Print2DExpr (Parse2DExpr (expression, FALSE), &myWin, pos,80-Depth);
     key = ngetchx();
     
    if (Width>100)
    {
     if (key ==344)
     {
     if (pos > -121)
     pos = pos-40;   
     }
     
     if (key ==338)
     {
     if (pos < 0)   
     pos = pos+40;   
     }
         
    }
   }
while (key !=KEY_ESC && key !=13 );

WinScrollV(&myWin,&wa,5+Height+Depth);
}
else
{
   printf("\n");
}
///////////// calcule numerique /////////////////////////////

   if (etape ==3)
   {
   NG_approxESI (expression);
   Print2DExpr (Parse2DExpr (top_estack, FALSE), &myWin, 0,80-Depth);
   ngetchx();
   
     
  if (qac != "none")
  {
  push_parse_text("3");
  ESI round3=top_estack;
     
  push_internal_simplify(expression);
  push_right(top_estack,NULL);
  push_round (top_estack,round3);
  newvar[J]=top_estack;
  push_parse_text (qac);
  newvar_name[J]=top_estack;
  J++;
     
  }
   
  }
   


  ONERR
 
  ENDTRY


}
User avatar
nikovitchi
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 80%
 
Posts: 13
Joined: 13 Dec 2014, 11:00
Gender: Not specified
Calculator(s):
MyCalcs profile

PreviousNext

Return to Programmation

Who is online

Users browsing this forum: ClaudeBot [spider] and 5 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1353 utilisateurs:
>1329 invités
>18 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)