1

comment faire pour avoir la dimention d'un entier ?
(sans passer par une chaine de caracteres)

2

je ne suis pas sur de comprendre ta question, mais je crois pouvoir te dire d'utiliser sizeof

3

arf... en C; d'après les normes ANSI :
char <= short <= int <= long

sous TIGCC (si tu utilises les options par défaut)
char = 8
short = int = 16
long = 32 (en bits)

sous VIsual C++ :
char = 8
short = 16 ?
int = long = 32
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

4

Maintenant que tu as ta reponse, moi je voudrais savoir pourquoi tu nous as parlé de chaine de caracteres dans ta question...
Parce que si les choses ne sont pas claires pour toi, on pourrait elaguer un peu tout ca je crois.

P.S: "dimension"
Je commence a reussir a faire bouger un sprite. Ou bah je suis content !

5

Je pense qu'il veut avoir le nombre de chiffres de l'entier.
unsigned long n;
unsigned char chiffres;
chiffres=n<10?1:n<100?2:n<1000?3:n<10000?4:n<100000?5:n<1000000?6:n<10000000?7:n<100000000?8:n<1000000000?9:10;
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é

6

Kevin> si c ça:
sprintf(buffer,"%ld",ton_long);
taille = strlen(buffer);
ce sera pe + efficace, mais je suis pas sur ke ce sois ça sa question
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

7

J'espère que tu rigole Kelso, la solution de Kevin est plus rapide rien que parce qu'elle n'utilise pas sprintf. Sinon log marche très bien pour trouver. - un peu plus long sans doute aussi -
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

8

On peut faire mieux, en faisant un parcours plus strategique de l'arbre des entiers.

9

arf...
je me demande si ça va pas m'être utile, ça, pr Krypton...
faut que j'y réfléchisse...
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

10

Pour determiner l'endroit ou il faut afficher la chaine des scores ?

11

pas pour les scrores, non (vu qu'il sont dans la partie gache de l'écran, je les aligne à gauche => pas de pb.
Mais pour déterminer où afficher la chaine des crédits (azlignés à droite)

mais bon, finalement, peut-être pas si utile que ça... vu qu'il faut qd même que je fasse sprintf pr le convertir en str... sad
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

bon la prochaine fois avant de contredire Kevin je ferme ma gueulegrin
dsl zetait fatiguézzz
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

13

si :
ce que je voudrais savoir c'est comment obtenir la dimenSion en chiffres d'un entier :
dim(123456)=6
existe t il une fonction telle ?

2 e question :

comment stocker "aaaaaaaaaaaa" dans une chaine de caractereS dans le corps meme du prgm ?

cad:

char ch[20];

void_main(void)
{
ch="aaaaaaa";
}

quand j'écris ca j ai une erreur !

14

strcpy(char,"aaaaa",nombre de carac à copier)

sinon la solution de Kevin est très bien.

Améliorée : (max=10^8)

unsigned long n;
unsigned char chiffres;
chiffres=n<10000?(n<100?(n<10?1:2): (n<1000?3:4)): (n<1000000?(n<1000000?5:6): (n<10000000?7:8))
[edit]Edité par Miles le 19-11-2001 à 20:17:34[/edit]
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

15

Anthop> si le pourquoi du comment de cette fonction strcpy, au lieu d'une affectation simple ne te parait pas evident c'est normal.
Par contre je crois qu'il faut le comprendre pour se souvenir du fait qu'il faut utiliser strcpy et pas "="

Les chaines de caracteres en C sont simplement des tableaux de caracteres (ca c'est evident).
Seulement le C etant tres proche de l'ASM, il traite les tableaux comme des "sequences de pointeurs" (ne me tapez pas, je sais ue ce n'est pas ca, mais a peu de choses pres...)

Donc quand tu fais ch = "aaaaaaa", il ne le comprend pas: ch est un pointeur, et "aaaaa" est une valeur...
Je ne sais pas exactement ce qui se passe a ce moment la, mais je crois qu'il convertit la chaine "aaaa" en adresse (avec les valeurs ASCII) et du coup tu obtiens... n'importe quoi !

Je me demande si c'etait bien utile tout ca, mais ca justifie l'utilisation d'une fonction externe, et le fait qu'elle ne sorte pas de nulle part.
Je commence a reussir a faire bouger un sprite. Ou bah je suis content !

16

>naholyr: J'ai rien compris a tes explications.?

17

heu honnettement, en me relisant moi non plus je comprends pas happy
Je crois qu'il serait bon que quelqu'un qui connaisse le principe et qui sache mieux expliquer que moi (kevin ?) prenne le pas happy
Je commence a reussir a faire bouger un sprite. Ou bah je suis content !

18

Les chaines de caractères C sont des tableaux de caractères, terminés par un caractères ayant pour valeur 0 => il s'agit du caractère codé '', dont la valeur ASCII est 0, et non pas du caractère affichable '0', dont le code ASCII est 48.

=> voici ce qu'est une chaine de caractères : {'A', 'B', 'C', 0}
(le 0 final étant en fait '' !!! Mais c'est la même chose, puisque '' a pour valeur 0 !!!

Quand tu fais une copie avec strcpy, par exemple strcpy(ma_str, "salut")
le programme va faire :
ma_str[0] = 's';
ma_str[1] = 'a';
ma_str[2] = 'l';
ma_str[3] = 'u';
ma_str[4] = 't';
Et il va ensuite faire : ma_str[5] = '';
Si la dernière étape n'est pas faite, la chaine n'aura pas de fin => ENORME risque d'erreurs diverses qd tu voudra l'utiliser !!!

En fait, on ne peut pas faire
ma_str = "salut";
tt simplement parce que "salut" n'est pas une variable, mais un tableau... autrement dit, une suite de variables ayant pour valeurs les codes ASCII de chacun des caractères (plus le zéro final !)
De plus, ma_str représente en fait l'adresse du début de l'espace alloué par le programme pour stocker la chaine de caractères, qd tu as fait
char ma_str[10]; // ou quelque chose comme ça !

=> tu ne peux pas envoyer tt un tableau là où il n'y a qu'une adresse !!!
IL faut que tu envoie un caractère à l'emplacement pointé par l'adresse de la STR, un autre à l'adresse de la STR+11 etc..

Je sais, c pas trop clair non plus, mais c en gros comme ça que ça marche.
=> De tte façon, si tu comprend pas vraiment, admet le... c le plus simple grin
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

19


Bon Squale92 est bien plus proche de la vérité que toi, mais c'est pas encore tout à fait vrai, notamment quand je lis que ptr= "aaa" ça fait "n'importe quoi"... Une solution à ça : mon petit cours sur les pointeurs en C 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.