DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen RC759 "Piccoline"

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RegneCentralen RC759 "Piccoline"

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦343acc887⟧ TextFile

    Length: 3712 (0xe80)
    Types: TextFile
    Names: »SUPERMAR.KED«

Derivation

└─⟦eca9022c5⟧ Bits:30002661 Datalære sådan - løsningsdiskette
    └─ ⟦this⟧ »SUPERMAR.KED« 

TextFile

0010 // simulering af supermarked: SUPER«nul»
0020 //---------------------------------------------------------------«nul»
0030 DIM videre$ OF 1 // en hjælpevariabel uden betydning«nul»
0040 CLEAR 
0050 INPUT "Hvor mange åbne kasser: ": n
0060 INPUT "hvor mange minutter skal der simuleres: ": slut
0070 //
0080 DIM kasse(n),kø(n)
0085 ankomne:= 0; nr:= 0; t:= 0 // kun nødvendig i RCcomal
0090 spildtid:= 0
0100 //
0110 FOR minut:= 1 TO slut DO
0120   EXEC kundeankomst(ankomne)
0130   //
0140   WHILE ankomne>0 DO
0150     EXEC findkortkø(kø,kasse,n,nr)
0160     kø(nr):= kø(nr)+1
0170     ankomne:= ankomne-1
0180   ENDWHILE 
0190   //
0200   FOR i:= 1 TO n DO
0210     IF kasse(i)=0 THEN
0220       IF kø(i)=0 THEN
0230         spildtid:= spildtid+1
0240       ELSE 
0250         kø(i):= kø(i)-1
0260         EXEC betjeningstid(t)
0270         kasse(i):= t
0280       ENDIF 
0290     ELSE 
0300       kasse(i):= kasse(i)-1
0310     ENDIF 
0320   NEXT i
0330   //
0340   CLEAR 
0350   PRINT "status for minut nr ";minut
0360   PRINT 
0370   FOR i:= 1 TO n DO
0380     PRINT USING "kasse nr ##: eksped.tid endnu ## min.": i,kasse(i)
0390     PRINT USING "             kølængde er ### personer": kø(i)
0400   NEXT i
0410   PRINT 
0420   PRINT 
0430   PRINT "Samlet spildtid i kasserne indtil nu: ";spildtid
0440   PRINT 
0450   PRINT 
0460   INPUT "- tast RETURN-tasten når udskrift er læst:": videre$
0470   //
0480 NEXT minut
0490 CLEAR 
0491 PRINT 
0492 PRINT 
0495 spildpct:= 100*spildtid/(n*slut)
0500 PRINT USING "SIMULERING SLUT - SAMLET SPILDTID ###### MIN ": spildtid
0505 PRINT USING "SPILDTID I % AF SAMLET ÅBNINGSTID ER ###.# %": spildpct
0510 END  // ------------------hovedprogram slut ---------------------------
0520 //
0530 //
0540 PROC kundeankomst(REF antal) CLOSED
0550   RANDOMIZE 
0560   x:= RND(1,100)
0570   CASE TRUE OF
0580   WHEN x<=21
0590     antal:= 0
0600   WHEN x<=49
0610     antal:= 1
0620   WHEN x<=72
0630     antal:= 2
0640   WHEN x<=90
0650     antal:= 3
0660   WHEN x<=96
0670     antal:= 4
0680   OTHERWISE 
0690     antal:= 5
0700   ENDCASE 
0710 ENDPROC kundeankomst
0720 //
0730 //
0740 PROC betjeningstid(REF tid) CLOSED
0750   RANDOMIZE 
0760   x:= RND(1,100)
0770   CASE TRUE OF
0780   WHEN x<=24
0790     tid:= 1
0800   WHEN x<=39
0810     tid:= 2
0820   WHEN x<=77
0830     tid:= 3
0840   WHEN x<=94
0850     tid:= 4
0860   OTHERWISE 
0870     tid:= 5
0880   ENDCASE 
0890 ENDPROC betjeningstid
0900 //
0910 //
0920 PROC findkortkø(REF kø(),REF kasse(),antal,REF nr) CLOSED
0930   nr:= 1
0940   FOR i:= 2 TO antal DO
0950     li:= kø(i)
0960     lnr:= kø(nr)
0970     IF kasse(i)>0 THEN li:= li+1
0980     IF kasse(nr)>0 THEN lnr:= lnr+1
0990     IF li<lnr THEN nr:= i
1000   NEXT i
1010 ENDPROC findkortkø
1020 //
1030 //-----------------------------------------------------------«nul»
5000 PROC skrivud(fra,til) CLOSED
5010   IMPORT antalfelter,antalposter,feltnavne$,skærmpå,postlængde
5020   DIM post$ OF postlængde
5030   DIM postindhold$(antalfelter) OF 25,svar$ OF 1
5040   CLEAR 
5050   IF til>antalposter THEN til:= antalposter
5060   IF fra<1 THEN fra:= 1
5070   FOR nr:= fra TO til DO
5080     READ FILE 1,nr: post$
5090     FOR f:= 1 TO antalfelter DO postindhold$(f):= post$((f-1)*25+1:f*25)
5100     PRINT USING "post nr ###:": nr
5110     FOR i:= 1 TO antalfelter DO
5120       PRINT feltnavne$(i);":   ";postindhold$(i)
5130     NEXT i
5140     PRINT 
5150     PRINT 
5160     IF skærmpå THEN
5170       INPUT AT(60,22),"-tast return:": svar$
5180       CLEAR 
5190     ENDIF 
5200   NEXT nr
5210 ENDPROC skrivud
«eof»