Bisam a écrit:"dialogs" = Boîtes de dialogue du langage TI-Basic.
Ok, d'accord mais des boîtes de dialogue pour faire quoi ? ^^
Bisam a écrit:"dialogs" = Boîtes de dialogue du langage TI-Basic.
#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
}
Lionel Debroux a écrit:
264 -> KEY_ESC
push_parse_text ("12");
push_substitute_simplify (expression,(ESQ []){VAR_Y_TAG},top_estack);
push_internal_simplify(expression);
#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
}
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 6 invités