好的,所以这可能是一个非常愚蠢的问题,但我还没有掌握大会的问题。我必须编写一个程序来计算一系列数字的总和。它的行为应该如下:
Enter the first integer in the series: 5
Enter the number of integers in the series: 3
Enter the offset between integers in the series: 4
The series is: 5, 9, 13.
The summation of the series is 27.
Would you like to calculate another summation (Y/N)? y
Enter the first integer in the series: 4
Enter the number of integers in the series: 5
Enter the offset between integers in the series: 27
The series is 4, 31, 58, 85, 112.
The summation of the series is 290.
Would you like to calculate another summation (Y/N)? Y
Enter the first integer in the series: -16
Enter the number of integers in the series: -22
There must be a positive number of integers in the series.
Would you like to calculate another summation (Y/N)? n
这是我到目前为止所做的:
li $v0, 4 #put 4 in as main parameter in v0
la $a0, Q1 #syscall will print string query 1
syscall
在s0
中存储串联的第一个整数li $v0, 5 #put 5 in as main parameter in v0
syscall #syscall will read integer from Q1
move $s0, $v0 #move integer in v0 to s0
请求串行整数
li $v0, 4 #put 4 in as main parameter in v0
la $a0, Q2 #syscall will print string query 2
syscall
在s1
中存储串行的整数li $v0, 5 #put 5 in as main parameter in v0
syscall #syscall will read integer from Q2
move $s1, $v0 #move integer in v0 to s1
请求整数偏移量
li $v0, 4 #put 4 in as main parameter in v0
la $a0, Q3 #syscall will print string query 3
syscall
在s2
中存储整数偏移量li $v0, 5 #put 5 in as main parameter in v0
syscall #syscall will read integer from Q3
move $s2, $v0 #move integer in v0 to s1
设置计数器
li $s3, 1 #Set counter to zero
li $t0, 1 #iterator count is in t0
我只是好奇在哪里开始我的循环?我将如何打印整个系列?任何建议都将不胜感激。
答案 0 :(得分:0)
我不确定你在"设置计数器"部分,因为s1
已包含多个系列成员。
s0
包含当前元素。
你需要的所有信息(附加信息)是清除current_sum,让我们说s3
:
add $s3, $zero, $zero ; or "move $s3, $zero" if you prefer the pseudo-ops
因此,对于您的第一个示例s0
- s3
将在第一次循环迭代之前设置为[5, 3, 4, 0]
。这就是你需要的一切("世界状态"),你要设置的任何其他值可能是特定子任务的临时值,比如显示一些值和类似值,但只要核心计算得到,这些四个值代表您所需要的一切,其他一切都可以基于它们。
如果s1
已低于1
(<=0
测试),则报错输入。
然后是循环算法:
s0
)添加到当前总和(s3
); summing up all numbers
s0
); handle the correct count of series' members
s1
s1
为零,则转到exit_loop ; preparing for next loop iteration
s2
)添加到当前元素(s0
)", "
exit_loop:
逻辑将涉及打印行尾,求和文本描述,当前总和值(s3
),另一个新行,并要求重复y / n。
例如,在这样的迭代过程中会发展出4个核心值:
[5, 3, 4, 0]
=&gt;显示"5, "
+所有值的更新[9, 2, 4, 5]
=&gt;显示"9, "
+所有值的更新[13, 1, 4, 14]
=&gt;将s3
修改为27
,显示"13"
,--s1
,跳转到exit_loop
在exit_loop
核心值为[13, 0, 4, 27]
时,代码会将27
显示为序列总和。