1

Cette fois, soit je suis devenu une tache en maths, soit y'a un problème qq part...

Voilà l'objet du délit : (tbl_anm[var_for]+((var_mul*aaaa)/100));

J'ai testé toutes les valeurs avant le calcul, et :
tbl_anm[var_for] = 159
var_mul= 50
aaaa= -159

Donc logiquement ça fait :
159+((50*(-159)/100))
159-79
80

Or ça ne fait pas du tout 80 à la fin du calcul mais qq chose dans les 700 eekeekeek

Autre question : qu'existe-t-il comme routine d'affichage de rectangle plein ultra-rapide ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

2

Hé hé encore un problème de compatibilité de types wink
On peut avoir les déclarations de tes trois variables ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

3

G pris un screenshot, avec les lignes en cause :

temp=((mul*(anm[x+5]-anm[x]))/100);
printf_xy(20,40+10*(x-num-3),"(%d * (%d - %d))/100 = %d ",mul,anm[x+5],anm[x],temp,A_NORMAL);

Erreur1.bmp

roll
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

alors les types :

tbl_anm (renommé en anm) : unsigned int *
var_for (renommé en x) : unsigned int
var_mul (renommé en mul) : unsigned int
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

tu dis utiliser des unsigned int...
or, tu affiche tout en considérant que c'est des int signed.

(%d => signed int)

il faudrait mettre %du je penses pr unsigned int
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

6

ah c pas considéré pareil ?
enfin c pas l'affichage qui est en cause, puisque ces valeurs servent après pr dessiner une ligne. Or dessiner une ligne à (0,0)(700,700) avec DrawLine, ça marche pas très bien sad

Je pense que l'affichage est correct, par contre la valeur l'est beaucoup moins sadsadsad
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

7

unsigne int et signed int ne sont pas considéré pareil !!!
(utilises short plutôt que int, d'ailleurs, si tu veux des vars codées sur 2 octets... partce que int est vague)

le bit de poids fort a une signification différente si c signed ou unsigned...

si c unsigned, le bit de poids fort compte ds le nombre
sinon, il indique le signe (en gros, technique du complément à deux)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

8

V essayer short, même si j'ai rien comprit à ton explication grin
(dans ton tuto, y'a marqué que int et short c la même chose...)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

9


Alors c'est simple : c'est à cause de la division et de la multiplication : il faut savoir que ces deux opérations traitent les données différemment suivant qu'elles soient signées ou non. Tu as déclaré tes variables comme non-signées. Or, la première opération effectuée dans ton code (soustraction) renvoie un résultat négatif (signé) !

Le compilateur, lui, il va demander au processeur de diviser et multiplier en considérant les données comme non-signées puisque les variables sont non-signées... Comme en fait ce qu'il divise et multiplie est négatif (à cause de la première opération), le résultat est faux !

Deux solutions :
- le transtypage : temp= ((mul * (int)(anm[x+5] - anm[x])) / 100)
- déclarer les variables comme étant signées : int var_for, var_mul, *tbl_anm

[edit]Edité par Thibaut le 20-03-2002 à 18:37:13[/edit]
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

10

Bon, enfin, ça doit être question de cast...
les unsigned doivent être transformés en sgned, ou le contraire...

temp=((mul*(anm[x+5]-anm[x]))/100);

temp, c quel type ?
mul : Unsigned int
anm = unsigned int
x : unsigned int
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

11

sous TIGCC, avec les options par défaut, int == short
mais ce n'est pas le cas sous d'autres compilo...

même, sous TIGCC, il est possible que int == long si on met l'option -mforceint ou -mlong, ou un truc comme ça....
=> mettre short assure une certains sécurité.

la norme ANSI dit uniquement ceci :
char <= short <= int <= long
(idem pr unsigned)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

12

Mmm... V essayer ça tout de suite oui

Heu je pense utiliser le transcryptage, puisque *tbl_anm est nécéssairement unsigned dans un autre endroit du prog...

Verdict dans 5 minutes wink
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

13

Verdict : Thibaut tu est génial lovelovelove

Merci à vous 2 !!!
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

14

Nan je suis pas génial, c'est juste que je connais un peu le fonctionnement des compilateurs (Azur rulleeeZZ), donc pour moi ce genre de problèmes est parfaitement évident wink


On ne dit pas "transcryptage" mais "transtypage" attention
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

15

Bob> de rien grin
(même si j'ai pas fait grand chose sad)

sinon, pr le post 11, il faut rajouter sizeof(TYPE) à chaque fois... (en remplaçant TYPE par char, int, ...)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

16

Thibaut > c noté wink
Squale > si, tu m'as apprit qq chose sur les int/short, et puis au moins tu as essayé, et c sympa top
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

17

oué, g essayé... dsl de pas avoir fait mieux.

ce quelque chose entre int et short ne te servira pas souvent (voire même jamais) sous TIGCC, mais il peut te servir si tu codes sur une autre machine.
Par exemple, sur les PC 32 bits (le tien en fait partie), les ints sont généralement de 32 bits => 2x plus que sous TIGCC
sous MSVisualC++6.0, les int correspondent à des long. (je crois bien !)

en fait, int correspond généralement à la taille d'un entier sur la machine de destination.
Sur un PIII, qui est un processeur 32 bits, ça sera 32 boits
sur un M68k, qui est un proc 16 bits (32 en interne, mais proc 16 bits qd même), ça sera 16 bits
DE FACON STANDARD... après, les standard se contournent
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

18

Voilà l'effet, vous en conviendrez très impressionant, que votre aide m'a permit de réaliser :

Visio1.gif

Ça vous en bouche un coin hein ? Pas la peine de le nier je le lis sur vos visages grin

Est-ce qu'il existe une routine d'affichage de rectangle plein + rapide que celle du TiOS ? (en noir et blanc)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

19

Je ne sais pas pencil

J'en ai une hyper-rapide qui traîne quelque part dans le bodel des feuilles de mon classeur de physique, au verso d'un polycopié de cours. J'avais programmé ça (en ASM) au début de l'année, un jour ou je me faisais chier. Si j'arrive à retrouver le truc dans mon bordel innomable... wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

20

oui
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

21

Bob64> fait la avec la routine de HLine qu'avait donné jackiechan[...] dans un topic pr lolo ...

22

Thibaut > on a la Bible des compilateurs dans notre bibliothèque smilegrinsmile
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

23

nEUrOne > Si je fais un rectangle moi même ac cette routine ça ira + vite que le DrawClipRect du TiOS ???
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

24

Miles : confus
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

25

Miles > la bible des compilateurs, il est pas nommé le "dragon" ? (Alfred aho, Ravi Sethi, Jeffrey Ullman)
si c'est ça je ne pense pas que thibaut puisse en tirer grand chose !