Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
75
Task/Letter-frequency/S-BASIC/letter-frequency.basic
Normal file
75
Task/Letter-frequency/S-BASIC/letter-frequency.basic
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
$constant EOF = 1AH rem normal end-of-file marker
|
||||
|
||||
rem Convert character to upper case
|
||||
function upcase(ch = char) = char
|
||||
if ch >= 'a' and ch <= 'z' then
|
||||
ch = ch - 32
|
||||
end = ch
|
||||
|
||||
rem Convert string to all upper case characters
|
||||
function allcaps(source = string) = string
|
||||
var p = integer
|
||||
for p = 1 to len(source) do
|
||||
mid(source,p,1) = upcase(mid(source,p,1))
|
||||
next p
|
||||
end = source
|
||||
|
||||
comment
|
||||
Preserve console and printer channels (#0 and #1)
|
||||
Channel #2 declared as sequential ASCII
|
||||
end
|
||||
files d, d, sa(1)
|
||||
|
||||
var ch = char
|
||||
var i = integer
|
||||
based errcode = integer
|
||||
base errcode at 103H rem S-BASIC stores run-time error code here
|
||||
var filename = string
|
||||
var total = real
|
||||
dim real freq(26)
|
||||
|
||||
input "Name of text file to process: "; filename
|
||||
filename = allcaps(filename)
|
||||
open #2; filename
|
||||
on error goto 7_trap rem In case input file lacks terminating ^Z
|
||||
|
||||
rem Initialize letter counts to zero
|
||||
for i = 1 to 26
|
||||
freq(i) = 0
|
||||
next i
|
||||
|
||||
rem Process the file
|
||||
total = 0
|
||||
input3 #2; ch
|
||||
while ch <> EOF do
|
||||
begin
|
||||
ch = upcase(ch);
|
||||
if ch >= "A" and ch <= "Z" then
|
||||
begin
|
||||
freq(ch - 64) = freq(ch - 64) + 1
|
||||
total = total + 1
|
||||
end
|
||||
input3 #2; ch
|
||||
end
|
||||
|
||||
goto 8_done rem Jump around error trap
|
||||
|
||||
7_trap if errcode <> 15 then
|
||||
begin
|
||||
print "Runtime error = ";errcode
|
||||
goto 9_exit
|
||||
end
|
||||
rem otherwise fall through on attempted read past EOF (err = 15)
|
||||
8_done
|
||||
close #2
|
||||
|
||||
rem Report results
|
||||
print "Letter Count Percent"
|
||||
for I = 1 to 26
|
||||
print chr(i+64);" ";
|
||||
print using " ##,###"; freq(i);
|
||||
print using " ##.#"; freq(i) / total * 100
|
||||
next i
|
||||
|
||||
9_exit
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue