1

Bonsoir
Voila je suis débutant en programmation et je voudrais apprendre l'utilisation des listes a travers les programmes, j'ai cherché sur le manuel de TI mais je n'ai rien trouvé pour m'aider, seule les fontion apré la creation d'une liste et la ceation manuelle y sont décrite.
Je cherche simplement a insérer des résultats dans une liste voila le programme que je veut faire qui est la juste pour apprendre l'utilisation des listes :
Prgm
ClrIO
Input "Nombre en base 10",a
Input "Base dans laquelle on veut",b
dim(string(a))->x
For i,0,x
newList(x)->base
partEnt(a/b)->q
a-b*q->r
q->a
EndFor
Disp base
Disp "Fin"
EndPrgm
Bon comme vous le voyer c'est plutot simpliste c'est changer un nombre de la base décimale a la base "b" par le systeme de division euclidienne
Mon probleme c'est que dans la boucle for j'aimerais ajouter toutes les valeurs de q une par une dans la liste afin de les ressortir en fin de programme et si possible (mais sa sa sera secondaire) de les ranger et les afficher dans le bon ordre car dans ce cas ci je trouve le dernier chiffre puis sa remonte donc l'inverse de ce qu'il faut.
Voila je c'est que sa doit etre simpliste mais après pas mal de galérage a essayer de comprendre ben je m'en remet a vous :-)
Merci de vos réponses et excusez-moi pour mon ignorance

2

Pour ajouter un élément à une liste tu peux faire:
élément->L[dim(L)+1]

Pour trier une liste il y a deux fonctions intégrées (en anglais) SortA et SortD qui trient respectivement une liste par ordre croissant et décroissant.
{4,8,3}->l
SortA l

Ces fonctions modifient la variable l, c'est à dire qu'à la fin de ce petit code l vaut {3,4,8}

Ou alors tu peux trier les listes à la main ça sera plus lent (beaucoup même) mais tu fais ce que tu veux.
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

3

si tu veux afficher la liste à l'envers, parcours la liste à l'envers smile
tu peuc rajouter un 4eme argument à for pour lui indiquer le pas : si tu utilises -1 il va enlever 1 à chaque fois
(attention les bornes pour for sont bien en premier la borne de départ et apres la borne d'arrivée et pas la plus petite en premier)
avatar

4

Désolé Twindruff mais je n'ai pas compris ce que tu me disait de faire pour la création de ma liste
Dans ces cas la :
For i,0,x
partEnt(a/b)->q
a-b*q->r
q->a
EndFor
J'ai introduit a et b puis la calculette me trouve q et je veut stoquer q dans une liste nommée "base" puis la valeur de q trouvée est remplacée par celle de a et le programme reboule jusqu'à ce que la valeur arrive a x définit plus haut mais ton utilisation de la liste je n'ais pas compris :
élément->L[dim(L)+1]

Ici sa donne :
(partEnt(a/b))->q[dim(q)+1] ?

Désolé mais j'ai un peu de mal ...

5

dans ton cas tu peux faire ça
newList(x)->q
For i,0,x
  partEnt(a/b)->q[i]
  a-b*q[i]->r
  q[i]->a
EndFor 


mais ceci aurait fonctionné aussi
{}->q
For i,0,x
  partEnt(a/b)->q[dim(q)+1]
  a-b*q[i]->r
  q[i]->a
EndFor 


La première solution est la meilleure car comme on connait la taille de la liste à l'avance la mémoire est allouée une fois au début.
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

6

Déja je vient de me rendre compte d'une chose ... mais ce n'est pas le probleme, c'est que c'est r que je veut rentrer dans ma liste
donc voila mon programme :
Prgm
EffES
Input "Nombre en base 10",a
Input "Base dans laquelle on veut",b
dim(chaîne(a))x
newList(x)->r
For i,0,x
partEnt(a/b)->q
a-b*q->r[ i ]
q->a
EndFor
Disp r
Disp "Fin" EndPrgm


Mais sa ne marche pas a la ligne
a-b*q->r[ i ]

Un message d'erreur affiche "Indice non valide"
donc c'est le i qui ne comprend pas ...
Encore une fois je fais appel a votre aide ....

7

c'est pasque les indices commencent à 1 en basic (j'avais oublié) il faut écrire
a-b*q->r[i+1]
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

8

Je vais essayer je te tient au courant
En tout cas merci beaucoup de ton aide pour un debutant c'est dur de comprendre sans aide ....

9

Bonjour :
J e signale qu'il ne sert a rien de declarer un tableau static pour en modifier tous les elements en Ti-Basic.
Ca fait faire plus de bulot au TiOS.
A chaque ajout d'un nouvelle element dans la liste, Tout ce passe comme si l'on inserait une chaine au milieu d'une autre.
Pour la simple raison que la taille de chaque type elementaire gere dans les liistes ( char short, long, str ) es t variable.
D'ailleur les variables ( char, short, long ) sont tous connu sous le nom de NUM.

Il es t donc judicieux d'ajouter un nouvel element directement dans une liste par la sintaxe :
elt->liste[i]:i+1->i

l'utilisation du compteur i permet de connaitre la dimension de la liste sans avoir recours a 'dim(' pour parcourir a chaque fois toute la liste (du debut a la fin) pour en connaitre la dimension.

Eh oui c'est du Ti-Basic