2017-04-06 272 views
0

這是一項作業,我被卡在這裏。任何幫助表示讚賞。在MARIE彙編語言中打印奇數至用戶輸入值

我試圖打印奇數到用戶輸入值(比如6或7)。 我有下面的代碼,哪種做我想要的,但不完全。

這是我的代碼:

org 100 

input    /ask for input 
store num   /store the input as num 

load one 
store oddnum  /store 1 as odd number 
output   /print odd number, prints 1 

oddloop, load oddnum /start of loop 
add two    /adds 2 in previous odd number value 
store oddnum   /stores the new odd number 
output    /prints odd number 

load num    /loads user input 
subt oddnum   /input value minus current odd number value 

skipcond 000   /skips next line if value is negative 
jump oddloop   /jumps to loop 

halt     /end program 

zero, dec 0 
one, dec 1 
two, dec 2 
num, dec 0 
oddnum, dec 0 

如果用戶輸入是7;它打印

1 3 5 7 9 

這裏,期望輸出是1 3 5 7

如果用戶輸入是6;它打印

1 3 5 7 

這裏,期望輸出爲1 3 5

回答

0

代碼的變化邏輯,有很多可能的方式,但我會親自做這一個:

num = input 
oddnum = 1 

while (oddnum <= num) { 
    output oddnum 
    oddnum += 2 
} 

(oddnum <= num)是等於(not(oddnum > num))

換句話說,如果(oddnum-num) > 0爲真,則在循環(退出它)之後跳轉到第一條指令,否則循環直到升循環到looblivion ...


爲什麼我會用一個邏輯,而不是其他一些:

  • 通知這裏只有一個輸出點(有兩個)
  • while(){}而不是do {} while(),所以它也適用於「0」輸入(不顯示任何東西)或「1」(「2」)輸入僅顯示"1"(具有兩個輸出的do {} while()邏輯將每次至少顯示"1 3") 。