max / min d'un nombre inconnu d'entrées dans LMC?
Comment puis-je imprimer le maximum / minimum d'un nombre inconnu d'entrées dans LMC?
Je sais que je peux SUB INPUT 1 FROM INPUT 2 et voir si c'est négatif ou positif mais je ne sais pas comment nommer les entrées pour pouvoir les charger.
PS: J'ai trouvé ce lien utile pour m'aider avec la partie «nombre inconnu d'entrées» Comment puis-je stocker un nombre inconnu d'entrées à différentes adresses dans LMC (petit-homme-ordinateur)?
Réponses
Vous créez un lien vers du code qui stocke un nombre indéterminé de valeurs d'entrée. Mais dans votre cas, ce n'est pas nécessaire: vous pouvez garder une trace du minimum et du maximum tout en lisant les valeurs d'entrée. Il n'est pas nécessaire de stocker réellement chaque valeur d'entrée:
#input: 5 3 9 6 2 4
INP ; data size
STA count
BRZ exit ; nothing to do
; initialise
LDA zero
STA max
LDA big
STA min
loop LDA count
SUB one
BRP nextvalue
output LDA min
OUT
LDA max
OUT
exit HLT
nextvalue STA count
INP ; get data value
STA value
SUB min
BRP checkmax
LDA value
STA min
checkmax LDA max
SUB value
BRP loop
LDA value
STA max
BRA loop
zero DAT 0
one DAT 1
big DAT 999
count DAT
min DAT
max DAT
value DAT
<script src="https://cdn.jsdelivr.net/gh/trincot/[email protected]/lmc.js"></script>