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:
alt text

È stato utile?

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 primo IF 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 seguente IF (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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top