π
<-
Chat plein-écran
[^]

[TIGCC] calcul formel

Programmation et implémentation d'algorithmes.

Re: [TIGCC] calcul formel

Message non lude nikovitchi » 13 Déc 2014, 20:54

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

Ok, d'accord mais des boîtes de dialogue pour faire quoi ? ^^
Avatar de l’utilisateur
nikovitchi
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Prochain niv.: 80%
 
Messages: 13
Inscription: 13 Déc 2014, 11:00
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: [TIGCC] calcul formel

Message non lude Lionel Debroux » 13 Déc 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.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: [TIGCC] calcul formel

Message non lude nikovitchi » 13 Déc 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 =)
Avatar de l’utilisateur
nikovitchi
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Prochain niv.: 80%
 
Messages: 13
Inscription: 13 Déc 2014, 11:00
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: [TIGCC] calcul formel

Message non lude nikovitchi » 13 Déc 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" :(
Avatar de l’utilisateur
nikovitchi
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Prochain niv.: 80%
 
Messages: 13
Inscription: 13 Déc 2014, 11:00
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: [TIGCC] calcul formel

Message non lude Lionel Debroux » 13 Déc 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.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: [TIGCC] calcul formel

Message non lude nikovitchi » 13 Déc 2014, 21:30

merci :) j'irai tester ça et je vous rend la réponse a très bientôt merci Mr
Avatar de l’utilisateur
nikovitchi
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Prochain niv.: 80%
 
Messages: 13
Inscription: 13 Déc 2014, 11:00
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: [TIGCC] calcul formel

Message non lude nikovitchi » 17 Déc 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: Tout sélectionner
#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 =)
Avatar de l’utilisateur
nikovitchi
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Prochain niv.: 80%
 
Messages: 13
Inscription: 13 Déc 2014, 11:00
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: [TIGCC] calcul formel

Message non lude Lionel Debroux » 18 Déc 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.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: [TIGCC] calcul formel

Message non lude nikovitchi » 18 Déc 2014, 22:01

Lionel Debroux a écrit:
264 -> KEY_ESC ;)


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


j'ai oublier aussi en bas de changer
Code: Tout sélectionner

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

par
Code: Tout sélectionner
push_internal_simplify(expression);


c’était juste un truc que j'avais écrit pour tester :p
Avatar de l’utilisateur
nikovitchi
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Prochain niv.: 80%
 
Messages: 13
Inscription: 13 Déc 2014, 11:00
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: [TIGCC] calcul formel

Message non lude nikovitchi » 23 Déc 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: Tout sélectionner
#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


}
Avatar de l’utilisateur
nikovitchi
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Prochain niv.: 80%
 
Messages: 13
Inscription: 13 Déc 2014, 11:00
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

PrécédenteSuivante

Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 6 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1357 utilisateurs:
>1337 invités
>16 membres
>4 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)