Jump to content

Kernighans large earthquake problem: Difference between revisions

Added solution for Action!
(Added solution for Action!)
Line 120:
 
A>quakes data.txt
8/27/1883 Krakatoa 8.8
5/18/1980 MountStHelens 7.6
1/25/4567 EdgeCase3 6.1
</pre>
 
=={{header|Action!}}==
In the following solution the input file [https://gitlab.com/amarok8bit/action-rosetta-code/-/blob/master/source/quakes.txt quakes.txt] is loaded from H6 drive. Altirra emulator automatically converts CR/LF character from ASCII into 155 character in ATASCII charset used by Atari 8-bit computer when one from H6-H10 hard drive under DOS 2.5 is used.
{{libheader|Action! Tool Kit}}
{{libheader|Action! Real Math}}
<lang Action!>INCLUDE "H6:REALMATH.ACT"
 
BYTE FUNC FindFirstNonspace(CHAR ARRAY s BYTE start)
WHILE start<=s(0) AND s(start)=32
DO
start==+1
OD
RETURN (start)
 
BYTE FUNC FindFirstSpace(CHAR ARRAY s BYTE start)
WHILE start<=s(0) AND s(start)#32
DO
start==+1
OD
RETURN (start)
 
BYTE FUNC Found(CHAR ARRAY s REAL POINTER value)
BYTE pos,v
CHAR ARRAY sub
 
pos=FindFirstNonspace(s,1)
pos=FindFirstSpace(s,pos)
pos=FindFirstNonspace(s,pos)
pos=FindFirstSpace(s,pos)
pos=FindFirstNonspace(s,pos)
IF pos>s(0) THEN RETURN (0) FI
 
SCopyS(sub,s,pos,s(0))
ValR(sub,v)
IF RealGreaterOrEqual(value,v)=0 THEN
RETURN (1)
FI
RETURN (0)
 
PROC Process(CHAR ARRAY fname REAL POINTER value BYTE search)
CHAR ARRAY line(255)
BYTE dev=[1]
 
Close(dev)
Open(dev,fname,4)
WHILE Eof(dev)=0
DO
InputSD(dev,line)
IF search=0 OR Found(line,value)=1 THEN
PrintE(line)
FI
OD
Close(dev)
RETURN
 
PROC Main()
CHAR ARRAY fname="H6:QUAKES.TXT"
REAL value
 
Put(125) PutE() ;clear the screen
IntToReal(6,value)
PrintF("Reading ""%S""...%E%E",fname)
Process(fname,value,0)
PutE()
Print("Searching for earthquakes > ")
PrintRE(value) PutE()
Process(fname,value,1)
RETURN</lang>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Kernighans_large_earthquake_problem.png Screenshot from Atari 8-bit computer]
<pre>
Reading "H6:QUAKES.TXT"...
 
8/27/1883 Krakatoa 8.8
5/18/1980 MountStHelens 7.6
3/13/2009 CostaRica 5.1
1/23/4567 EdgeCase1 6
 
 
 
1/24/4567 EdgeCase2 6.0
1/25/4567 EdgeCase3 6.1
 
 
Searching for earthquakes > 6
 
8/27/1883 Krakatoa 8.8
5/18/1980 MountStHelens 7.6
Line 176 ⟶ 266:
1/25/4567 EdgeCase3 6.1
</pre>
 
 
=={{header|ALGOL 68}}==
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.