Ecco una vecchia scuola IF per voi, ma c'è un problema
-
03-10-2019 - |
Domanda
Ho un'istruzione IF in QBASIC ... sì ... QBASIC ...
Ho insegnato a qualcuno di programma (ho deciso che questo sarebbe bello e facile da vedere come funziona di sintassi).
... Ad ogni modo, ho questo codice:
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
Ma quando si digita "do you like cheese?
" sembra rispondere solo "Yep, I like cheese
" ogni altra volta ...
Qualcuno potrebbe fare luce su questo?
Nota:
opere "do you like music?
" tutti di tempo ...
Nota 2:
Schermata dell'uscita:
Soluzione
Il codice è fornito appare corretta.
Provare una delle seguenti condizioni:
- Se possibile, inviateci un esempio di codice più grande. Sto indovinando l'errore è di fuori del codice che hai fornito.
- Output l'ingresso (
a$
) prima del primoIF
per confermare il codice dovrà lavorare con l'ingresso previsto. - Nella maggior parte delle lingue,
FALSE
è pari a zero e vero è tutto il resto. Tuttavia, si consiglia di essere più esplicito con il seguenteIF (INSTR(a$) > 0)
.
Modifica si dovrebbe mettere un goto start
su ogni risultato formaggio. In caso contrario, sta andando al codice musicGenre
.
Altri suggerimenti
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
Questo programma dimostra l'analisi di input e GOSUB in 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