Если еще лестница в QBasic
Мой код QBasic для вычисления скидки ниже:
CLS
INPUT "ENTER BILL AMOUNT";AMT
IF AMT <= 6000 THEN
DISCOUNT = 0
ELSEIF AMT > 6000 AND AMT <= 15000 THEN
DISCOUNT = 0.2 * AMT
ELSEIF AMT > 15000 AND AMT <= 50000 THEN
DISCOUNT = 0.3 * AMT
ELSEIF AMT > 50000 AND AMT <= 100000 THEN
DISCOUNT = 0.4 * AMT
ELSEIF AMT > 100000 AND AMT<= 200000 THEN
DISCOUNT = 0.5 * AMT
ELSEIF AMT > 200000 AND AMT <= 1000000 THEN
DISCOUNT = 0.6 * AMT
ELSE
DISCOUNT = 0.7 * AMT
END IF
NET = AMT - DISCOUNT
PRINT "THE BILL AMOUNT IS:"; NET
END
Тем не менее, я получаю сообщение об ошибке в строке 50 (строка 5 программы) при запуске программы, хотя я не могу найти никаких синтаксических ошибок в программе.
4 ответа
Правильный синтаксис в QBasic: ELSEIF
вместо ELSE IF
(обратите внимание, что два слова написаны как одно, без пробела).
Ниже приведено решение без каких-либо отклонений:
CLS
INPUT "ENTER BILL AMOUNT BEFORE DISCOUNT"; AMT
DISCOUNT = 0.7
IF AMT <= 1000000 THEN DISCOUNT = 0.6
IF AMT <= 200000 THEN DISCOUNT = 0.5
IF AMT <= 100000 THEN DISCOUNT = 0.4
IF AMT <= 50000 THEN DISCOUNT = 0.3
IF AMT <= 15000 THEN DISCOUNT = 0.2
IF AMT <= 6000 THEN DISCOUNT = 0
DISCOUNT = DISCOUNT * AMT
NET = AMT - DISCOUNT
PRINT "THE BILL AMOUNT IS:"; NET
END
Вы должны заменить ELSE IF на ELSEIF.
CLS
INPUT "ENTER BILL AMOUNT"; AMT
IF AMT <= 6000 THEN
DISCOUNT = 0
ELSEIF AMT > 6000 AND AMT <= 15000 THEN
DISCOUNT = 0.2 * AMT
ELSEIF AMT > 15000 AND AMT <= 50000 THEN
DISCOUNT = 0.3 * AMT
ELSEIF AMT > 50000 AND AMT <= 100000 THEN
DISCOUNT = 0.4 * AMT
ELSEIF AMT >100000 AND AMT <= 200000 THEN
DISCOUNT = 0.5 * AMT
ELSEIF AMT > 200000 AND AMT <= 1000000 THEN
DISCOUNT = 0.6 * AMT
ELSE
DISCOUNT = 0.7 * AMT
END IF
NET = AMT - DISCOUNT
PRINT "THE BILL AMOUNT IS:" NET
END
В качестве альтернативы, если вы действительно хотите сделать "ЛЕСТНИЦУ", как следует из названия, вам следует:
CLS
INPUT "ENTER BILL AMOUNT";AMT
IF AMT <=6000 THEN
DISCOUNT = 0
ELSE
IF AMT > 6000 AND AMT <= 15000 THEN
DISCOUNT =0.2 * AMT
ELSE
IF AMT > 15000 AND AMT <= 50000 THEN
DISCOUNT =0.3*AMT
ELSE
IF AMT >50000 AND AMT<=100000 THEN
DISCOUNT =0.4*AMT
ELSE
IF AMT >100000 AND AMT<=200000 THEN
DISCOUNT =0.5*AMT
ELSE
IF AMT >200000 AND AMT<=1000000 THEN
DISCOUNT =0.6*AMT
ELSE
DISCOUNT =0.7*AMT
END IF
END IF
END IF
END IF
END IF
END IF
NET=AMT - DISCOUNT
PRINT "THE BILL AMOUNT IS:"NET
END
Это решает лестницу, делая скидку и количество более читабельным.
CLS
INPUT "ENTER BILL AMOUNT"; AMT
SELECT CASE AMT
CASE IS <= 6000
DISCOUNT = 0
CASE 6000 TO 15000
DISCOUNT = 0.2 * AMT
CASE 15000 TO 50000
DISCOUNT = 0.3 * AMT
CASE 50000 TO 100000
DISCOUNT = 0.4 * AMT
CASE 100000 TO 200000
DISCOUNT = 0.5 * AMT
CASE 200000 TO 1000000
DISCOUNT = 0.6 * AMT
CASE ELSE
DISCOUNT = 0.7 * AMT
END SELECT
NET = AMT - DISCOUNT
PRINT "THE BILL AMOUNT IS:"; NET
END