You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MARIE语言实现三角形面积计算:除法逻辑问题求助

问题分析

你现在有两个核心问题:

  1. 输出时机错误:除法循环里每次减完2就立刻执行输出,导致所有中间递减的数值都被打印出来;
  2. 除法逻辑偏差:你误以为把乘积一直减2到0就是结果,但实际上三角形面积是乘积除以2的商——比如3*4=12,除以2得6,而不是减到0。
修正方案

调整除法逻辑:新增一个计数器变量,每次从乘积里减2,同时计数器加1,直到乘积变为0,最后输出计数器的值(这才是正确的商)。另外把输出操作移到循环结束后,只打印一次最终结果。

修正后的MARIE代码:

/len = length, hei = height
/get and store input
input
store LEN
input 
store HEI
/乘法循环:计算底乘高,结果存入NUM
LOOP, load LEN
add NUM
store NUM
/ 高度减1,判断是否继续循环
load HEI
subt ONE
store HEI
skipcond 400  / HEI大于0时继续循环
jump LOOP
/初始化除法用的计数器
load ZERO
store COUNT
/除法循环:统计减2的次数,次数即为NUM/2的结果
LOOP1, load NUM
subt TWO
store NUM
/ 计数器加1
load COUNT
add ONE
store COUNT
/ 判断乘积是否还能继续减2
load NUM
skipcond 400
jump LOOP1
/输出最终的三角形面积
load COUNT
output
/程序结束
halt

LEN, DEC 0
HEI, DEC 0
ONE, DEC 1
NUM, DEC 0
TWO, DEC 2
ZERO, DEC 0
COUNT, DEC 0
关键修改说明
  • 新增ZERO和COUNT变量,专门用于除法计数;
  • 除法循环不再中途输出,而是用计数器记录减2的次数,这个次数就是正确的面积值;
  • 仅在循环全部结束后输出一次结果,避免打印无关的中间值。

测试用例验证:底为3、高为4时,乘法得到NUM=12,除法循环执行6次后COUNT变为6,最终输出6,完全符合预期。

内容的提问来源于stack exchange,提问作者damingo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 05:23:19