Вот заявление старой школы IF для вас, но есть проблема
У меня есть оператор IF в QBASIC... да... QBASIC...
Я учил кого-то программировать (я решил, что было бы хорошо и легко увидеть, как работает синтаксис).
... Во всяком случае, у меня есть этот код:
CLS
start:
INPUT ">>", a$
PRINT a$
IF (INSTR(a$, "do you")) THEN
IF (INSTR(a$, "like")) THEN
IF (INSTR(a$, "cheese")) THEN PRINT "Yep, I like cheese":
IF (INSTR(a$, "music")) THEN PRINT "Depends, which genre?": GOTO musicGenre
ELSE IF (INSTR(a$, "hate")) THEN
IF (INSTR(a$, "cheese")) THEN PRINT "No, I like cheese"
END IF
END IF
END IF
musicGenre:
INPUT ">>", m$
SELECT CASE (m$)
CASE "pop"
PRINT "..pop! lol, baa baa"
CASE "rock"
PRINT "Rock is ok"
END SELECT
GOTO start
Но когда я печатаю do you like cheese?
"кажется, только ответить" Yep, I like cheese
"через раз...
Может ли кто-нибудь пролить свет на это?
нота:
" do you like music?
"работает каждый раз...
заметка 2:
Снимок экрана с выводом:
3 ответа
Решение
Ваш код, который вы предоставили, кажется правильным.
Попробуйте одно из следующего:
- Если возможно, пришлите нам пример кода большего размера. Я предполагаю, что ошибка находится за пределами кода, который вы предоставили.
- Вывести вход (
a$
) до первогоIF
чтобы подтвердить ваш код будет работать с ожидаемым вводом. - На большинстве языков
FALSE
это ноль, а истина это что-нибудь еще. Тем не менее, вы можете быть более точным со следующимиIF (INSTR(a$) > 0)
,
РЕДАКТИРОВАТЬ: Вы должны положить goto start
на любой сыр результат. В противном случае, это идет к musicGenre
код.
CLS
start:
INPUT ">>", a$
IF (INSTR(1, a$, "do you")) THEN
IF (INSTR(1, a$, "like")) THEN
IF (INSTR(1, a$, "cheese")) THEN PRINT "Yep, I like cheese"
IF (INSTR(1, a$, "music")) THEN PRINT "Depends, which genre?": GOSUB musicGenre
END IF
IF (INSTR(1, a$, "hate")) THEN
IF (INSTR(1, a$, "cheese")) THEN PRINT "No, I like cheese"
END IF
END IF
GOTO start
musicGenre:
INPUT ">>", m$
SELECT CASE (m$)
CASE "pop"
PRINT "..pop! lol, baa baa"
CASE "rock"
PRINT "Rock is ok"
END SELECT
RETURN
Эта программа демонстрирует синтаксический анализ ввода и gosubs в Basic.
REM Cheese progran source:
CLS
DO
INPUT ">>", a$
a$ = LCASE$(a$)
PRINT a$
IF INSTR(a$, "do you") THEN
IF INSTR(a$, "like") THEN
IF INSTR(a$, "cheese") THEN
PRINT "Yep, I like cheese":
END IF
IF INSTR(a$, "music") THEN
PRINT "Depends, which genre?"
GOSUB MusicGenre
END IF
ELSE
IF INSTR(a$, "hate") THEN
IF INSTR(a$, "cheese") THEN
PRINT "No, I like cheese"
END IF
END IF
END IF
END IF
LOOP
END
MusicGenre:
INPUT ">>>", m$
a$ = LCASE$(a$)
SELECT CASE (m$)
CASE "pop"
PRINT "..pop! lol, baa baa"
CASE "rock"
PRINT "Rock is ok"
END SELECT
RETURN