Catamorphism: Difference between revisions

Catamorphism in various BASIC dialents (QBasic, BASIC256, True BASIC and Yabasic)
No edit summary
(Catamorphism in various BASIC dialents (QBasic, BASIC256, True BASIC and Yabasic))
Line 366:
<pre>10
24</pre>
 
 
=={{header|BASIC}}==
==={{header|BASIC256}}===
{{trans|Run BASIC}}
<lang BASIC256>arraybase 1
global n
dim n = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
 
print " +: "; " "; cat(10, "+")
print " -: "; " "; cat(10, "-")
print " *: "; " "; cat(10, "*")
print " /: "; " "; cat(10, "/")
print " ^: "; " "; cat(10, "^")
print "max: "; " "; cat(10, "max")
print "min: "; " "; cat(10, "min")
print "avg: "; " "; cat(10, "avg")
print "cat: "; " "; cat(10, "cat")
end
 
function min(a, b)
if a < b then return a else return b
end function
function max(a, b)
if a > b then return a else return b
end function
 
function cat(cont, op$)
temp = n[1]
temp$ = ""
for i = 2 to cont
if op$ = "+" then temp += n[i]
if op$ = "-" then temp -= n[i]
if op$ = "*" then temp *= n[i]
if op$ = "/" then temp /= n[i]
if op$ = "^" then temp = temp ^ n[i]
if op$ = "max" then temp = max(temp, n[i])
if op$ = "min" then temp = min(temp, n[i])
if op$ = "avg" then temp += n[i]
if op$ = "cat" then temp$ += string(n[i])
next i
if op$ = "avg" then temp /= cont
if op$ = "cat" then temp = int(string(n[1]) + temp$)
return temp
end function</lang>
 
 
==={{header|QBasic}}===
{{works with|QBasic|1.1}}
{{trans|Run BASIC}}
<lang qbasic>DIM SHARED n(10)
FOR i = 1 TO 10: n(i) = i: NEXT i
 
FUNCTION FNMIN (a, b)
IF (a < b) THEN FNMIN = a ELSE FNMIN = b
END FUNCTION
FUNCTION FNMAX (a, b)
IF (a < b) THEN FNMAX = b ELSE FNMAX = a
END FUNCTION
 
FUNCTION cat# (cont, op$)
temp = n(1)
FOR i = 2 TO cont
IF op$ = "+" THEN temp = temp + n(i)
IF op$ = "-" THEN temp = temp - n(i)
IF op$ = "*" THEN temp = temp * n(i)
IF op$ = "/" THEN temp = temp / n(i)
IF op$ = "^" THEN temp = temp ^ n(i)
IF op$ = "max" THEN temp = FNMAX(temp, n(i))
IF op$ = "min" THEN temp = FNMIN(temp, n(i))
IF op$ = "avg" THEN temp = temp + n(i)
NEXT i
IF op$ = "avg" THEN temp = temp / cont
cat = temp
END FUNCTION
 
PRINT " +: "; " "; cat(10, "+")
PRINT " -: "; " "; cat(10, "-")
PRINT " *: "; " "; cat(10, "*")
PRINT " /: "; " "; cat(10, "/")
PRINT " ^: "; " "; cat(10, "^")
PRINT "min: "; " "; cat(10, "min")
PRINT "max: "; " "; cat(10, "max")
PRINT "avg: "; " "; cat(10, "avg")</lang>
 
 
==={{header|True BASIC}}===
<lang qbasic>SHARE n(10)
FOR i = 1 to 10
LET n(i) = i
NEXT i
 
FUNCTION fnmin(a,b)
IF (a < b) then LET fnmin = a else LET fnmin = b
END FUNCTION
FUNCTION fnmax(a,b)
IF (a < b) then LET fnmax = b else LET fnmax = a
END FUNCTION
 
FUNCTION cat(cont, op$)
LET temp = n(1)
LET temp$ = ""
FOR i = 2 TO cont
IF op$ = "+" then LET temp = temp+n(i)
IF op$ = "-" then LET temp = temp-n(i)
IF op$ = "*" then LET temp = temp*n(i)
IF op$ = "/" then LET temp = temp/n(i)
IF op$ = "^" then LET temp = temp^n(i)
IF op$ = "max" then LET temp = fnmax(temp,n(i))
IF op$ = "min" then LET temp = fnmin(temp,n(i))
IF op$ = "avg" then LET temp = temp+n(i)
IF op$ = "cat" then LET temp$ = temp$ & str$(n(i))
NEXT i
IF op$ = "avg" then
LET temp = temp / cont
END IF
IF op$ = "cat" then
LET t$ = str$(n(1)) & temp$
LET temp = VAL(t$)
END IF
LET cat = temp
END FUNCTION
 
PRINT " +: "; " "; cat(10, "+")
PRINT " -: "; " "; cat(10, "-")
PRINT " *: "; " "; cat(10, "*")
PRINT " /: "; " "; cat(10, "/")
PRINT " ^: "; " "; cat(10, "^")
PRINT "min: "; " "; cat(10, "min")
PRINT "max: "; " "; cat(10, "max")
PRINT "avg: "; " "; cat(10, "avg")
PRINT "cat: "; " "; cat(10, "cat")
END</lang>
 
 
==={{header|Yabasic}}===
{{trans|Run BASIC}}
<lang freebasic>dim n(10)
for i = 1 to 10 : n(i) = i : next i
print " +: ", " ", cat(10, "+")
print " -: ", " ", cat(10, "-")
print " *: ", " ", cat(10, "*")
print " /: ", " ", cat(10, "/")
print " ^: ", " ", cat(10, "^")
print "min: ", " ", cat(10, "min")
print "max: ", " ", cat(10, "max")
print "avg: ", " ", cat(10, "avg")
end
sub cat(cont,op$)
cat = n(1)
for i = 2 to cont
if op$ = "+" cat = cat + n(i)
if op$ = "-" cat = cat - n(i)
if op$ = "*" cat = cat * n(i)
if op$ = "/" cat = cat / n(i)
if op$ = "^" cat = cat ^ n(i)
if op$ = "max" cat = max(cat,n(i))
if op$ = "min" cat = min(cat,n(i))
if op$ = "avg" cat = cat + n(i)
next i
if op$ = "avg" cat = cat / cont
return cat
end sub</lang>
 
 
=={{header|BBC BASIC}}==
2,136

edits