2017-06-17 81 views
0

我有一個程序,我需要在句子中反轉每個單詞。 我做了我的程序,但它也反轉了每個單詞和句子,但我不想扭轉句子。反轉每個單詞而不是整個句子MIPS

那是什麼,我想在最後:

My string: Razvan Balaci 
String print: navzaR icalaB

但我的程序打印:

 icalaB navzaR

那是我的代碼:

.data 
string: .space 12 
reverso: .space 12 
menssagem: .asciiz "Enter in stringing, max 11 characters: " 

.text 
main: 

la $a0, menssagem  #calling opening menssagem 
li $v0, 4 
syscall 

li $v0, 8 
la $a0, string 
li $a1, 12 
syscall 

li $t1, 0 

bump: 
lbu $t0, string($t1) 
beqz $t0, stend 
addu $t1, $t1, 1 
j bump 

stend: 
li $t2, 0 
addi $t1, $t1 -1 

populate: 
blt $t1, $zero, done 
lb $t3, string($t1) 
sb $t3, reverso($t2) 
sub $t1, $t1, 1 
add $t2, $t2, 1 
j populate 

done: 
sb $zero, reverso($t2) #null terminate reverso 
li $v0, 4 
la $a0, reverso 
syscall 
li $v0, 10 
syscall 

也許我需要做一個子串? 謝謝。

+0

單詞之間用空格分開。您可以使用使用空格和字符串字符(空字符)的末尾來反轉。閱讀字符串,直到你找到一個空格並將這部分倒轉,保持空格不變,然後對字符串的其餘部分執行此操作,直至找到最後一個字符。 – Azeem

+0

@Azeem這是一個不錯的提示,但我需要幫助,我在哪裏實施? –

+0

以您最喜歡的語言設計,實現,調試算法。然後只需輸入執行相同算法的彙編語言即可。沒有那不意味着使用strok或類似的東西,在C或Python或其他任何東西走字符串。 –

回答

0

一些解決方案的輪廓,可以幫助:

-Reserve小的字大小的空間(也許10-20字節)。

- 爲句子保留兩個空格(一個用於原始字符串,另一個用於結果)。

- 存儲3個指向所有三個空格的指針。

-loop與原句(每個字符)的指針指向做下面的每一次迭代:

  • 如果當前的字符不是空格或換行或空,把那個角色到Word大小的空間並向前推進指針,然後開始下一次迭代。
  • 否則(即如果字符是''或'\ n'或'\ 0'),則開始在我們存儲的單詞上反向循環,並將其放入「結果」句子中(其指針現在指向在最後一個字符處),直到指針返回到空間的開始處。然後將您讀取的''或'\ n'或'\ 0' 添加到結果中。

希望它能幫助!如果你想要的話,你可以更有效地做到這一點(例如,「結果」空間並不是真正需要的)。

相關問題