首页 > 解决方案 > 将输入语句打印到特定行(?)

问题描述

为 qbasic 类做一个项目,我需要第一行来询问输入,即“输入预计的耗尽率:”,之后它将在其下运行一个循环,其中我需要它在同一行上打印另一个输入语句第一行,“输入另一个预计的消耗率或 0 退出:”我遇到的问题是,如果我使用 LOCATE,它将直接在该语句下打印循环的下一个结果,当 id 喜欢它打印在最后一个结果下方时在列表中,位于最低的未使用空间,并且不会清除旧文本的顶行。我知道部分原因是 LOCATE 由于循环而重复,但我真的被卡住了。对不起格式我是新人:)

    CLS

DIM percent AS DOUBLE
DIM ozLevel AS DOUBLE
DIM counter AS INTEGER
DIM change AS DOUBLE

INPUT "enter a projected depletion rate, or 0 to quit: ", percent

PRINT
PRINT TAB(2); "Loss"; TAB(17); "Final Ozone"
PRINT TAB(2); "Rate"; TAB(10); "Years"; TAB(17); "Concentration"

change = (percent / 100)

DO WHILE percent <> 0

counter = 0
ozLevel = 450
    DO UNTIL ozLevel < 200
    counter = counter + 1
    ozLevel = ozLevel - (ozLevel * change)
    LOOP
PRINT USING "##.##%"; TAB(2); percent;
PRINT TAB(10); counter;
PRINT USING "###.##"; TAB(17); ozLevel;
LOCATE 1, 1
INPUT "enter new projection: ", percent
change = (percent / 100)
LOOP

LOCATE 1, 35
PRINT "DONE"

END

标签: inputformatqbasic

解决方案


QBasic 具有CRSLIN告诉您光标在哪里的功能。

  • 确保打印第三个结果执行回车和换行。只需删除;

  • 现在将索引存储到下一个可用行的合适变量中,例如TableRow

  • 像以前一样在屏幕的第一行输入。

  • 在每个后续输入之后,使用此变量将光标定位在下一个可用行上。

    ...
    PRINT USING "###.##"; TAB(17); ozLevel
    tablerow = CRSLIN
    LOCATE 1, 1
    INPUT "enter new projection: ", percent
    change = (percent / 100)
    LOCATE tablerow, 1
    LOOP
    ...

推荐阅读