Egyptian division: Difference between revisions
Content added Content deleted
(Added Easylang) |
(Added various BASIC dialects (Applesoft BASIC, Chipmunk Basic, GW-BASIC and MSX Basic)) |
||
Line 639: | Line 639: | ||
=={{header|BASIC}}== |
=={{header|BASIC}}== |
||
==={{header|Applesoft BASIC}}=== |
|||
The [[#MSX_BASIC|MSX BASIC]] solution works without any changes. |
|||
==={{header|BaCon}}=== |
==={{header|BaCon}}=== |
||
<syntaxhighlight lang="c">'---Ported from the c code example to BaCon by bigbass |
<syntaxhighlight lang="c">'---Ported from the c code example to BaCon by bigbass |
||
Line 733: | Line 736: | ||
{{out}} |
{{out}} |
||
<pre>Same as FreeBASIC entry.</pre> |
<pre>Same as FreeBASIC entry.</pre> |
||
==={{header|Chipmunk Basic}}=== |
|||
{{trans|QBasic}} |
|||
{{works with|Chipmunk Basic|3.6.4}} |
|||
{{works with|QBasic}} |
|||
<syntaxhighlight lang="vbnet">100 dim table(32,2) |
|||
110 let dividend = 580 |
|||
120 let divisor = 34 |
|||
130 let i = 1 |
|||
140 let table(i,1) = 1 |
|||
150 let table(i,2) = divisor |
|||
160 do while table(i,2) < dividend |
|||
170 let i = i+1 |
|||
180 let table(i,1) = table(i-1,1)*2 |
|||
190 let table(i,2) = table(i-1,2)*2 |
|||
200 loop |
|||
210 let i = i-1 |
|||
220 let answer = table(i,1) |
|||
230 let accumulator = table(i,2) |
|||
240 do while i > 1 |
|||
250 let i = i-1 |
|||
260 if table(i,2)+accumulator <= dividend then |
|||
270 let answer = answer+table(i,1) |
|||
280 let accumulator = accumulator+table(i,2) |
|||
290 endif |
|||
300 loop |
|||
310 print str$(dividend);" divided by ";str$(divisor);" using Egytian division"; |
|||
320 print " returns ";str$(answer);" mod(ulus) ";str$(dividend-accumulator) |
|||
330 end</syntaxhighlight> |
|||
==={{header|FreeBASIC}}=== |
==={{header|FreeBASIC}}=== |
||
Line 776: | Line 808: | ||
{{out}} |
{{out}} |
||
<pre>580 divided by 34 using Egytian division returns 17 mod(ulus) 2</pre> |
<pre>580 divided by 34 using Egytian division returns 17 mod(ulus) 2</pre> |
||
==={{header|GW-BASIC}}=== |
|||
{{trans|QBasic}} |
|||
{{works with|PC-BASIC|any}} |
|||
{{works with|BASICA}} |
|||
{{works with|Chipmunk Basic}} |
|||
{{works with|QBasic}} |
|||
<syntaxhighlight lang="qbasic">100 CLS |
|||
110 DIM T(32,2) |
|||
120 LET A = 580 |
|||
130 LET B = 34 |
|||
140 LET I = 1 |
|||
150 LET T(I,1) = 1 |
|||
160 LET T(I,2) = B |
|||
170 WHILE T(I,2) < A |
|||
180 LET I = I+1 |
|||
190 LET T(I,1) = T(I-1,1)*2 |
|||
200 LET T(I,2) = T(I-1,2)*2 |
|||
210 WEND |
|||
220 LET I = I-1 |
|||
230 LET R = T(I,1) |
|||
240 LET S = T(I,2) |
|||
250 WHILE I > 1 |
|||
260 LET I = I-1 |
|||
270 IF T(I,2)+S <= A THEN LET R = R+T(I,1): LET S = S+T(I,2) |
|||
280 WEND |
|||
290 PRINT STR$(A);" divided by ";STR$(B);" using Egytian division"; |
|||
300 PRINT " returns ";STR$(R);" mod(ulus) ";STR$(A-S) |
|||
310 END</syntaxhighlight> |
|||
==={{header|MSX Basic}}=== |
|||
{{works with|MSX BASIC|any}} |
|||
{{works with|Applesoft BASIC}} |
|||
{{works with|GW-BASIC}} |
|||
{{works with|Chipmunk Basic}} |
|||
{{works with|QBasic}} |
|||
<syntaxhighlight lang="qbasic">110 DIM T(32,2) |
|||
120 A = 580 |
|||
130 B = 34 |
|||
140 I = 1 |
|||
150 T(I,1) = 1 |
|||
160 T(I,2) = B |
|||
170 IF T(I,2) < A THEN I = I+1 : T(I,1) = T(I-1,1)*2 : T(I,2) = T(I-1,2)*2 |
|||
180 IF T(I,2) >= A THEN GOTO 200 |
|||
190 GOTO 170 |
|||
200 I = I-1 |
|||
210 R = T(I,1) |
|||
220 S = T(I,2) |
|||
230 IF I > 1 THEN I = I-1 : IF T(I,2)+S <= A THEN R = R+T(I,1): S = S+T(I,2) |
|||
240 IF I <= 1 THEN GOTO 260 |
|||
250 GOTO 230 |
|||
260 PRINT STR$(A);" divided by ";STR$(B);" using Egytian division"; |
|||
270 PRINT " returns ";STR$(R);" mod(ulus) ";STR$(A-S) |
|||
280 END</syntaxhighlight> |
|||
==={{header|PureBasic}}=== |
==={{header|PureBasic}}=== |