1

Bonjour, j'aimerai savoir, comment tracer une courbe
exemple, comment afficher la courbe x^3 avce les axes et tout
merci
et un deuxieme point,
comment, afficher, avec printf ou autrement, les symboles spéciaux de la calculette, comme infini ou i complexe?
merci

2

alors, pour ta deuxième question, c'est dans la doc de tigcc.
pour la premiere, ben ca dépend ce que tu veux faire, si tu veux toi même afficher ou afficher l'écran plot

3

oula mais elle est compliquée la doc lol!!! et pis ya des trucs indocumentés!!
et pour la courbe, ben

en fait, dans mon prog, je suis censé entrer une fonction avec les variables a,b,c,d,x

et j'aimerai, apres avoir assigné des valeurs aux variables,
que la ti, m'affiche les axes, et la courb,e comme si on la tapait dans le menu Y= pis qu'on la voyait, dans le menu graph.

4

neurosupherot :
Bonjour, j'aimerai savoir, comment tracer une courbe
exemple, comment afficher la courbe x^3 avce les axes et tout merci

http://tigcc.ticalc.org/doc/bascmd.html#cmd_drawfunc
et un deuxieme point, comment, afficher, avec printf ou autrement, les symboles spéciaux de la calculette, comme infini ou i complexe?

Tu fais un ord("ton caractère")>Hex sur la calculatrice pour avoir le code de caractère en hexa et puis tu mets \xCODEHEXA dans ta chaîne de caractères, par exemple \x7F.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

5

euh... merci bcp pr ton lien! mais, en fait, je suis un pe une novice, donc..
si je veux par ex tracer une courbe c bien

void _main(void)
{
push_parse_text ("sin(x)");
cmd_drawfunc (top_estack);
}
est ce que c'est bien ca qu'il faut que je tape?
et, si c'est ca, comment transformer les variables en text??


float a,b,c,x;
void _main(void)
{
push_parse_text ("%f(x)²+%f(x)+%f",a,b,c);
cmd_drawfunc (top_estack);
}



est ce bien comme ca?

merci

6

Non, plutôt:
float a,b,c,x;
void _main(void)
{
char buffer[1024];
sprintf(buffer,"%f(x)²+%f(x)+%f",a,b,c)
push_parse_text (buffer);
cmd_drawfunc (top_estack);
}

Il y a plus efficace en utilisant la représentation tokénisée directement:
float a,b,c,x;
void _main(void)
{
push_Float(a);
push_quantum_pair(2,1);
push_quantum_pair(POSINT_TAG,VAR_X_TAG);
push_quantum_pair(POW_TAG,MUL_TAG);
push_Float(b);
push_quantum_pair(VAR_X_TAG,MUL_TAG);
push_quantum(ADD_TAG);
push_Float(c);
push_quantum(ADD_TAG);
cmd_drawfunc (top_estack);
}
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

7

Mais tu ne gagne rien par rapport a un programme basic en faisant ca. Et tracer une courbe en C est tres difficile, j'ai essaye de faire un traceur mais sans resultats!!

8

Ce n'est pas trivial de faire un traceur de courbes correct !

9

Et ben si j'ai essayer et j'en ai chier!! Alors si quelqun arrive sans difficulte je veut voir!!!

10

nEUrOO :
Ce n'est pas trivial de faire un traceur de courbes correct !

avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

11

=> afficher une simple courbe y est pourtant

12

13

bein il y a plusieurs difficultés..
1. Annalysé l'expression et la tokéniser.
2. la symplifier si possible
3. Faire les calculs des ordonnées.
4. Faire un algo de lissage de courbe.

14

ok jvé essayer le code de kevin kolfler, bien que je ne comprenne pas la moitié lol!
sinon, pour afficher infini, est ce que printf("\0xBE") marcherait?
j'ai encor des questions:
-y a t il un moyen de faire une code pour quitter un programme à tout moment, en appuyant sur une touche?
-coment, pendant un scanf, ne pouvoir qu'écrire des chiffres et les opérateurs +,-,*,/,etc
-comment faire, pour désactiver les fonctions comme 2nd, alpha, etcau bas de l'écran de la calto,dans un prog, car qd ya une image, ca, affiche 2nd en bas, et ca chiffone tout :/
-Quel sont les moyens de faire passer une sécurité:
exemple: je transfere un mon prog sur la calto de qqn, et il faut qu'il entre un code secret pour faire fonctionner le programme:
le code sera alors sauvgardé sous un autre fichier qui restera dans sa calculette.
En, gros, entrer un code secret ds le prog, mais l'entrer que la premiere fois, comme ca si il est bon, le code secret n'est plus demandé au début du prog.


MERCI Beaucoups à tous ceux qui m'ont déjà répondu et à ceux qui me repondront.

15

Eu l'histoire du code c'est pour faire quoi??

16

17

Deja rien que tokeniser l'expression c'est vachement dur de faire un interpreteur ensuite tracer bon ca depant de quel fonction on trace ensuite l'aglo de lissage pas besion dans ce que j'avai fait deja j'obtenai pour y=sin(x) une courbe ausi belle que celle du traceur TI

18

oui, en qq sorte. mais bon, pas la peine de trucs cryptés, juste pour un essai.
un simlle code secret qu'on entre dans au début du programme, si le fichier du code secret n'a pas encrore été créé.
par ex:
vous n'etes pas identifiés, veuillez endtrer votre code

12345

code ok.>>création du fichier.

19

Lol c'est tres simple a faire ca!!

20

lol très simple?...
pourais tu me donner un exemple? merci.

21

Ben atta que je mette en ligne mon tuto sur les fichiers et apres ca sera simple au lancement de ton prog tu teste si le fichier existe si il existe tu verifie le code qui est dedans si il n'existe pas tu demande le code que tu veut et ensuite tu creer le fichier il n'y a rien de compliquer ici!!

22

ca sert a que dalle de mettre ca dans un fichier qui peut etre lu par nimporte qui !
voila un code qui tue tou grin
unsigned char code_secret(void)
{
 clrscr();
 if(*(unsigned char*)(0x40000)!=99)
 {	
  printf("entrez votre code secret pour enrengistrement\n");
  unsigned char code[6],x=1;
  unsigned short k=0;
  code[0]=99;
  memset(&code[1],0,5);
  while(k!=13)
  {
  k=ngetchx();
  if(k<256 && x<6)
  {
   DrawChar(7*x,20,k,A_NORMAL);
   code[x++]=k;
  }
  if(k==257 && x>1)DrawChar(7*(x-=1),20,32,A_REPLACE);
  }
  memcpy((unsigned char*)((0x40000)),&code[0],6);
  return 2;
 }
 else 
 {
 printf("entrez votre code secret\n");
 
 unsigned char x=0,code[5],code1[5];
 memcpy(&code[0],(unsigned char*)((0x40000)+1),5);

 unsigned short k=0;
 memset(&code1[0],0,5);
 while(k!=13)
 {
 k=ngetchx();
 if(k<256 && x<5)
 {
 DrawChar(7*x,20,42,A_NORMAL);
 code1[x++]=k;
 }
 if(k==257 && x>0)DrawChar(7*(x-=1),20,32,A_REPLACE);
 }

 if(memcmp(&code1[0],&code[0],5)==0)return 1;
 clrscr();
 printf("mauvais mot de passe ");
 ngetchx();
 return 0;
 }
}

c'est un exemple, je te conseille pas de l'utiliser si t'a des tsr ou un kernel
et ca marche que pour un seul prgm (prgm clé ? )
euh...

23

en fait c'est idiot ce que j'ai fait...
integre ca dans ton prgm :
static unsigned char mon_futur_code [5]={0,0,0,0,0};
void getpass(unsigned char * pass)
{
 unsigned char x=0;
 unsigned short k=0;
 while(k!=13)
 {
  k=ngetchx();
  if(k<256 && x<5)
  {
   DrawChar(6*x,20,42,A_NORMAL);
   pass[x++]=k;
  }
  if(k==257 && x>0)DrawChar(7*(x-=1),20,32,A_REPLACE);
 }
}

unsigned char code_secret(void)
{
 clrscr();
 if(mon_futur_code[1]==0)
 {	
  printf("entrez votre code secret pour enrengistrement\n");
  getpass(&mon_futur_code[0]);
 
  return 2;
 }
 else 
 {
 printf("entrez votre code secret\n");
 unsigned char code[5];
 memset(&code[0],0,5);
 getpass(&code[0]);
 if(memcmp(&code[0],&mon_futur_code[0],5)==0)return 1;
 clrscr();
 printf("mauvais mot de passe ");
 ngetchx();
 return 0;
 }
}
euh...

24

coment, pendant un scanf, ne pouvoir qu'écrire des chiffres et les opérateurs +,-,*,/,etc

tu veux faire quoi exactement empecher l'utilisateur d'utiliser certaine touche ?
par exemple comme les operateurs sont entre 43 et 47 (avec "." et ",")
 unsigned short k=0; 
 while(k!=264) 
 { 
  k=ngetchx(); 
  if(k>42 && k<48) 
  { 
//    tu fais ton bazar 
  } 
 } 

sinon tu passe par un switch :
 unsigned short k=0; 
 while(k!=264) 
 { 
  k=ngetchx(); 
 switch(k)
 { 
 case 45:
  //ce qu'on fait si -
 break; 
 case 47:
 // pour /
 break;
 //...
  } 
 } 

sinon la meilleure methode c'est de faire son propre rowread en asm qui ne prend que certaine touche grin
-comment faire, pour désactiver les fonctions comme 2nd, alpha, etcau bas de l'écran de la calto,dans un prog, car qd ya une image, ca, affiche 2nd en bas, et ca chiffone tout :/

2 solutions : soit tu desactive l'auto int 1 mais tu peux plus te servir du ngetchx()
soit tu fais ca :
void *kbq = kbd_queue (); 
unsigned short key=0; 
for(;; ) 
{ 
if (ST_flags & ST_2ND) ST_modKey (ST_NONE);   
if (ST_flags & ST_DIAMOND )ST_modKey (ST_NONE);   
if (ST_flags & ST_SHIFT ) ST_modKey (ST_NONE);   
if (ST_flags & ST_ALPHA) ST_modKey(ST_NONE);  
if (!OSdequeue (&key, kbq)) ; // dans key, tu a le meme code que si tu avais utilisé ngetchx() 
} 

mais attention, noublie pas de modifier l'ams minimum : 2.00
projects->option->compilation->program options->operating systems
euh...

25

neurosupherot
: sinon, pour afficher infini, est ce que printf("\0xBE") marcherait?

Oui.
-y a t il un moyen de faire une code pour quitter un programme à tout moment, en appuyant sur une touche?

Oui, tu peux intercepter ON à l'aide de l'auto-int n°6, passer en mode utilisateur et faire un longjmp ou ER_throw, mais ce n'est vraiment pas propre (et il faut savoir exactement ce que tu fais, sinon tu vas tout faire planter). Je te conseille plutôt de tester ta touche à tous les endroits qui pourraient durer longtemps (dans une boucle, par exemple).
-coment, pendant un scanf, ne pouvoir qu'écrire des chiffres et les opérateurs +,-,*,/,etc

Tu ne peux pas. Tu peux rejeter les mauvaises entrées après en utilisant des trucs comme %[0-9+*/-], mais tu ne contrôles pas la routine d'entrée. Si tu veux une routine d'entrée perso, sscanf est là pour ça. Et au passage, les fonctions *scanf sont le meilleur moyen de créer des programmes énormes, à éviter à tout prix! (Franchement, je les ai mises seulement parce que j'avais marre d'entendre râler "Où est scanf?".)
-comment faire, pour désactiver les fonctions comme 2nd, alpha, etcau bas de l'écran de la calto,dans un prog, car qd ya une image, ca, affiche 2nd en bas, et ca chiffone tout :/

De manière propre: on ne peut pas.
Avec un hack: cf. les routines hidekstat de Olle Hedman.
-Quel sont les moyens de faire passer une sécurité:
exemple: je transfere un mon prog sur la calto de qqn, et il faut qu'il entre un code secret pour faire fonctionner le programme:
le code sera alors sauvgardé sous un autre fichier qui restera dans sa calculette. En, gros, entrer un code secret ds le prog, mais l'entrer que la premiere fois, comme ca si il est bon, le code secret n'est plus demandé au début du prog.

Il n'y a pas vraiment de méthodes fiables et surtout propres (sans écrire n'importe quoi n'importe où en mémoire) pour ça. Si tu utilises des fichiers, ce sera facilement hackable.
bidoo :
ca sert a que dalle de mettre ca dans un fichier qui peut etre lu par nimporte qui !
voila un code qui tue tou grin
unsigned char code_secret(void)
{
 clrscr();
 if(*(unsigned char*)(0x40000)!=99)
[...]

c'est un exemple, je te conseille pas de l'utiliser si t'a des tsr ou un kernel et ca marche que pour un seul prgm (prgm clé ? )

1. Beurk! Beurk! Beurk!
2. Tu écris par dessus des vecteurs importants. (Tu n'as même pas pris la peine de vérifier que les adresses de mémoire en question étaient libre avant de faire ta connerie.)
3. Ton code ne marche pas sur Titanium.
Résumé: Poubelle!
bidoo :
en fait c'est idiot ce que j'ai fait...
integre ca dans ton prgm :
static unsigned char mon_futur_code [5]={0,0,0,0,0};
[...]

Beurk! Ne marche pas si le programme est archivé et/ou compressé. Poubelle!
bidoo :
sinon la meilleure methode c'est de faire son propre rowread en asm qui ne prend que certaine touche grin

Beurk! ngetchx sert à quoi selon toi? Refaire un interpréteur de touches est un gaspillage de place, en plus d'être dégueulasse si tout ce qu'on veut est rentrer des caractères avec les combinaisons de touches prévues.
soit tu fais ca :
void *kbq = kbd_queue (); 
unsigned short key=0; 
for(;; ) 
{ 
if (ST_flags & ST_2ND) ST_modKey (ST_NONE);   
if (ST_flags & ST_DIAMOND )ST_modKey (ST_NONE);   
if (ST_flags & ST_SHIFT ) ST_modKey (ST_NONE);   
if (ST_flags & ST_ALPHA) ST_modKey(ST_NONE);  
if (!OSdequeue (&key, kbq)) ; // dans key, tu a le meme code que si tu avais utilisé ngetchx() 
} 

Ne fonctionne pas. Ça vire l'indicateur quand c'est trop tard, donc ça l'efface, mais le morceau d'image aura aussi été effacé. Il faut sauvegarder et redessiner la zone de l'indicateur dans le handler de l'AI1.

Franchement, bidoo, arrête de donner de mauvais conseils! roll

Et au passage, c'est idiot de virer les indicateurs, du coup l'utilisateur ne saura plus s'il a appuyé sur un modifiant ou pas! Les indicateurs sont là pour une raison! Qu'ils soient moches quand on a une image, d'accord, mais ce n'est pas une raison valable de les supprimer. Si l'utilisateur ne veut pas détruire l'image, il n'a qu'à ne pas appuyer sur un modifiant. tongue
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

26

27

Et tu crois que scanf, gets et getsn sont codés en quoi? C'est de l'ASM pur (presque pour le scanf qui a quand-même une petite macro appelant des ROM_CALLs d'allocation mémoire et des fonctions en ASM (getsn, sscanf)).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

28

-Pour les astuces de license, merci!!(encore une chose:est il possible d'acceder au programme, grace au numero de série de la calto?comme ca, la licence ne marcherai VRAIMENT QUE pour UNE et UNE SEULE calto)
-printf("\0xBE") ne marche pas sad
-pour désactiver les touches comme 2nd et tt, ben en fait, c'est vrai, il suffit de ne pas appuyer dessus! lol
-pour sortir d'un programme, j'ai pas compris tt la manoeuvre
-les codes pour afficher une courbe ont l'air ok pour le compilateur, pas d'erreurs, ni de warning mais pdt le prog, ma calto affiche une syntax erreur, et plante!!

-Merci!

29

Tu connai le but des communotés TI c'est pas de faire payer les programmes!!!!!!!

30

mais c'est pas pour PAYER!! c'est pour que le prog marche que sur les TI avec un bon numero de série!!
c pas payant, c'est juste pour l'anti piratage lol!