C'est le topic de Thierry Loiseau qui m'a inspiré (A revoir ici)
Exemple:
Code : Tout sélectionner
division euclidienne
--------------------
dividente=? 125689
diviseur=? 125
quotient= 1005
reste= 64
voulez-vous le detail (o/n)
125689 ! 125
0 +-------
--- ! 001005
12
0
---
125
125
-----
06
0
---
68
0
---
689
625
-----
64
Le code, si ça intéresse quelqu'un:
Code : Tout sélectionner
10 scnclr:fast
20 print tab(30);"division euclidienne"
30 print tab(30);"--------------------"
40 input "dividente=";d1
50 input "diviseur=";d2
60 if d2=0 then 10
70 if d2>=d1 then 10
80 qo=int(d1/d2):re=d1-(d2*qo)
90 print "quotient=";qo
100 print "reste="re
110 print "qqvoulez-vous le detail (o/n)"
120 get a$:if a$="o" then 150
130 if a$="n" then 10
140 goto 120
150 scnclr
160 ld=1+int(log(d1)/log(10))
170 dt=d1/10^ld
180 x=3:y=0:x1=ld+5:r3=0:cp=0
190 print tab(2);d1;"!";d2
200 print tab(4+ld);"+-------":print tab(4+ld);"!"
210 i=int(dt*10):dt=(dt*10-i)+0.0000001:i=i+(r3*10)
220 if cp>0 then char 1,x,y,right$(str$(i),1)
230 y=y+1
240 r1=int(i/d2):x1=x1+1:char 1,x1,2,right$(str$(r1),1)
250 r2=r1*d2:gosub 330:char 1,x-len(r$)+1,y,r$
260 y=y+1:for a=0 to len(r$)+1:char 1,x-len(r$)+a,y,"-":next a
270 y=y+1:r3=i-r2:gosub 370:char 1,x-len(r$)+1,y,r$
280 cp=cp+1:x=x+1
290 if cp<ld then 210
300 get a$:if a$="" then 300
310 goto 10
320 rem calcul de la longueur de r2
330 r$=str$(r2)
340 r$=right$(r$,len(r$)-1)
350 return
360 rem calcul de la longueur de r2
370 r$=str$(r3)
380 r$=right$(r$,len(r$)-1)
390 return