Page 1 of 1

Racine au compte-goutte

Unread postPosted: 03 Oct 2012, 14:27
by servabat
Bonjour,

J'essaye d'implémenter l'algorithme du compte-goutte (à but éducatif) en TI-Basic.
Je procède donc comme suit :
Code: Select all
Define cgrac(a)=
Func
Local str_a,size_a,precomma,postcomma,pairpc,pairpsc,act_char,act_slice
string(a) ->str_a
dim(str_a) ->size_a
inString(str_a,".")-1 ->precomma
size_a-precomma-1 ->postcomma
mod(precomma,2) ->pairpc
mod(postcomma,2) ->pairpsc
0 ->act_char
While act_char<size_a
  If act_char=0 and pairpc!=0 Then
    expr(mid(str_a,act_char,1)) ->act_slice
    act_char+1 -> act_char
  ElseIf act_char=size_a-1 and pairpsc=1 Then
    expr(mid(str_a,act_char,1)&"0") ->act_slice
    act_char+1 -> act_char
  ElseIf mid(str_a,act_char,1)="." Then
    act_char+1 -> act_char
  Else
    expr(mid(str_a,act_char,2)) -> act_slice
    act_char+2 -> act_char
  EndIf
  Disp act_slice
EndWhile
EndFunc

Mais voila rien que pour ce petit bout de découpage, j’obtiens déjà une erreur :/

Avez vous une idée du problème ?

Merci d'avance.

Re: Racine au compte-goutte

Unread postPosted: 03 Oct 2012, 14:32
by Neo
Il faudrait que tu nous retranscrive ce que tu vois à l'écran de ta calculatrice.. (un screenshot serait du plus bel effet :D)

Re: Racine au compte-goutte

Unread postPosted: 03 Oct 2012, 14:46
by servabat
Salut :)

Screenshot de l'erreur :
Image
Screenshot de l'endroit de l'erreur :
Image

Re: Racine au compte-goutte

Unread postPosted: 03 Oct 2012, 14:48
by Excale
Et ça te renvoie à quelle ligne :)?

Re: Racine au compte-goutte

Unread postPosted: 03 Oct 2012, 14:51
by servabat
Excale wrote:Et ça te renvoie à quelle ligne :)?

La ligne où il y a le curseur sur la deuxième capture, c'est à dire :
Code: Select all
expr(mid(str_a,act_char,1)) ->act_slice

Re: Racine au compte-goutte

Unread postPosted: 03 Oct 2012, 14:54
by Excale
Vérifie que act_char ait bien une valeur acceptable :).

(et perso je prefère "act_slice := expr(mid(str_a,act_char,1))" à "expr(mid(str_a,act_char,1)) ->act_slice"

Re: Racine au compte-goutte

Unread postPosted: 03 Oct 2012, 15:03
by servabat
J'ai beau essayer un peu de tout, ça marche pas ^^ Je pense que je ne devrais pas faire ça avec des chaînes, je vais essayer avec des troncatures et des soustractions (qu'en pensez vous ?)

Re: Racine au compte-goutte

Unread postPosted: 03 Oct 2012, 17:15
by Bisam
Tu dois avoir l'habitude de programmer en C... et cela a créé une erreur.
Sur calculette, les indices de chaînes de caractères commencent à 1 et non à 0. C'est le "mid(str_a,0,1)" qui renvoie une erreur.
Il faut donc initialiser "act_char" à 1 et arrêter ton while avec "< ou =".

PS : Dans le même ordre d'idée, tu as bien utilisé le symbole "différent" de la calculette et non le "!=" du C ?
(le pire, c'est que ça ne renverrait pas une erreur : ça renverrait juste des résultats faux...)