//--- lecture des N premiers caractères d'un fichier texte (ici goriot.txt) //--- au format ascii, ie chaque caractère est codé //--- par un entier entre 0 et 255 //--- N peut-être supérieur à la taille du fichier: dans ce cas, le fichier //--- sera lu en entier, et le nombre de caractères lus sera length(x) N=2^12 f=mopen("goriot.txt"); x=ascii(mgetstr(N,f)); mclose(f); //--- affichage du texte à l'écran //--- on peut aussi utiliser char(x) tout seul, //--- mais les sauts de ligne sont alors hasardeux... printf("%s\n",char(x)) //---------------------------------------------------------------------------- // bin_add //---------------------------------------------------------------------------- // calcule c + x*2^(-l), et renvoie le résultat dans c // c est un tableau binaire représentant le nombre 0,c1c2c3...cN en base deux // x et l sont des entiers // le résultat est donné sous forme binaire 0,c1c2c3...cN // si le résultat est supérieur ou égal à 1, la partie entière est tronquée //---------------------------------------------------------------------------- function c=bin_add(c,x,l) if l>length(c) then c=[c zeros(1,l-length(c))]; end i=l r=0 while (i>0) & (x~=0 | r~=0) c(i)=c(i)+modulo(x,2)+r if (c(i)>1) then r=1; c(i)=c(i)-2; else r=0; end x=int(x/2) i=i-1 end endfunction //---------------------------------------------------------------------------- // bin_leq //---------------------------------------------------------------------------- // renvoie le résultat (booléen) du test c <= d // c et d sont des tableaux binaires représentant des nombres // de l'intervalle [0,1[ sous la forme 0,b1b2b3...bN en base deux //---------------------------------------------------------------------------- function t=bin_leq(c,d) l=min(length(c),length(d)) f=find(d(1:l)-c(1:l)~=0) if f==[] then if length(c)==length(d) then t=%T else t=(length(c)