8Fermer10
tamaLe 27/06/2008 à 19:55

Aussi, une petite particularité du Ti-Basic, de mémoire "temp->pos[dim(pos)+1]" est plus rapide que ton appel à augment.


mais ça fait une erreur de dimension non ?

En règle générale il faut éviter de mettre une expression complexe dans l'une des bornes d'un "for" : ici, ton "dim(str)-len" est recalculé à chaque tour de boucle.


Exact. Donc :
search(str,substr) 
Func 
//str = chaine 
//substr = chaine à trouver 
 
Local len,temp,pos,len2  //len = taille de substr, la chaine à trouver, temp = variable temporaire 
{}->pos                         //pos = liste de sortie qui contient toutes les positions où substr apparait 
 
dim(substr)->len 
dim(str)-len->len2
For temp,1,len2
    If mid(str,temp,len)=substr 
        augment(pos,{temp})->pos       
EndFor 
pos 
EndFunc