2010-09-16 19 views
14

bir sorun ... QBASIC ... evet ... Birisi programlamak öğretmeni olduğumİşte size deyimi IF eski bir okul, ama QBASIC bir IF deyimi var

yoktur (bu karar sözdiziminin nasıl çalıştığını görmek güzel ve kolay olurdu).

... Neyse, bu kod var: ...

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 

Ama yazarken "do you like cheese?" sadece "Yep, I like cheese" her zaman cevap görünüyor

herkes döken Could bazı bu konuda ışık?

not: "do you like music?" Her zaman çalışır
...

not 2:
çıktı Ekran Görüntüsü:
alt text

+7

+1 Ben QBASIC seviyorum: D – halfdan

+2

giriş gördüğünüz hatalı çıktı nedir "Peynir sever misin?" ve "Evet, peyniri severim" demez mi? – Steven

+1

Beklendiği gibi "Evet, peyniri severim" demediğinde ne diyor? Bir şey mi var, yok mu? – Meff

cevap

4

Sağladığınız Kodunuz doğru görünür . Bize daha büyük bir kod örneğini göndermek

  • Mümkünse:

    Aşağıdakilerden birini deneyin. Hatanın, sağladığınız kodun dışında olduğunu tahmin ediyorum.

  • Girdiyi (a$) ilk IF kodundan önce kodunuzun beklenen girişle çalışacağını onaylayın.
  • Çoğu dilde FALSE sıfırdır ve doğru olan başka bir şeydir. Ancak, aşağıdaki IF (INSTR(a$) > 0) ile daha açık olmak isteyebilirsiniz.

DÜZENLEME: herhangi peynir sonucu bir goto start koymak gerekir. Aksi halde, musicGenre koduna gidiyor.

+1

Hey, çok şerefe. "' 'peynirden hoşlanırsın '' gibi bir $ çıktı ** ancak **, daha sonra bir $ çıktı bile olmaz .. gibi ..Çıktı ilk kez doğru, sonra boş (ikinci bir çıktı da dahil olmak üzere) ikinci kez, o zaman üçüncü doğrudur. –

+1

ve kodun geri kalanını –

+1

sorusuna ekledim cevabımı düzenle! Senin için – 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

Herhangi bir açıklama olmadan kod burada kabul edilebilir bir cevap değildir. Lütfen kodunuzun ** nasıl ** sorusunu çözdüğü hakkında biraz bilgi veriniz. Teşekkürler. –

0

Bu program, Basic'deki ayrıştırma girişini ve gosublarını gösterir.

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