2010-09-16 7 views
14

ho un'istruzione IF in QBASIC ... sì ... QBASIC ...Ecco una vecchia scuola IF per voi, ma c'è un problema

ho insegnato a qualcuno di programmare (ho deciso che questo sarebbe bello e facile vedere come funziona la sintassi).

... Comunque, 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 altro momento ...

Qualcuno potrebbe gettare un po ' luce su questo?

nota:
"do you like music?" funziona ogni volta ...

nota 2:
Schermata dell'uscita:
alt text

+7

+1 Mi piace QBASIC: D – halfdan

+2

Qual è la produzione corretta che si vede quando si immette "fai come il formaggio?" e non dice "Sì, mi piace il formaggio"? – Steven

+1

Cosa dice quando non dice "Sì, mi piace il formaggio" come previsto? Qualcosa o niente? – Meff

risposta

4

Il codice che hai fornito appare corretta .

provare una delle seguenti:

  • Se possibile, inviateci un esempio di codice più grande. Immagino che l'errore sia al di fuori del codice che hai fornito.
  • Immettere l'input (a$) prima del primo IF per confermare che il codice funzioni con l'input previsto.
  • Nella maggior parte delle lingue, FALSE è zero e true è qualsiasi altra cosa. Tuttavia, potresti voler essere più esplicito con il seguente IF (INSTR(a$) > 0).

EDIT: si dovrebbe mettere un goto start su ogni risultato formaggio. In caso contrario, verrà utilizzato il codice musicGenre.

+1

Ehi, applausi molto. un $ uscite come "ti piace il formaggio" ** tuttavia **, non produrrà nemmeno un $ dopo .. come ..l'output è giusto la prima volta, quindi è vuoto (incluso l'output a $) la seconda volta, quindi è corretto il terzo. –

+1

e ho aggiunto il resto del mio codice alla domanda –

+1

vedi la mia risposta modifica! – Steven

1
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 
+2

Il codice senza spiegazione non è una risposta accettabile qui. Si prega di [modificare] per fornire alcune informazioni su ** come ** il tuo codice risolve il problema. Grazie. –

0

Questo programma mostra l'input di analisi e i 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 
Problemi correlati