Печать операторов ввода в заданную строку c (?) - PullRequest
1 голос
/ 27 января 2020

Выполнение проекта для класса qbasi c, и мне нужна 1-я строка, чтобы запросить ввод, т.е. "Введите прогнозируемый уровень истощения:", после этого он будет запускаться под oop под ним, где он мне нужен чтобы напечатать другой оператор ввода в той же первой строке: «Введите другой прогнозируемый уровень истощения или 0, чтобы выйти:» у меня возникла проблема в том, что если я использую LOCATE, он напечатает следующие результаты l oop непосредственно под этим оператор, когда id нравится печатать ниже последних результатов в списке, в самом низком неиспользуемом месте, и не очищает верхнюю строку старого текста. Я знаю, что отчасти это связано с тем, что LOCATE повторяется из-за l oop, но я действительно застрял. извините за формат я новичок:)

    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

1 Ответ

1 голос
/ 27 января 2020

QBasi c имеет функцию CRSLIN, которая сообщает вам, где находится курсор.

  • Убедитесь, что при печати третьего результата выполняется возврат каретки и перевод строки. Просто удалите ;

  • Теперь сохраните индекс для следующей доступной строки в подходящей переменной, например TableRow .

  • Ввод, как и раньше, в 1-й строке экрана.

  • Поместите курсор на следующую доступную строку, используя эту переменную, после каждого следующего ввода.

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