kein "else if" in xcode?

  1. mobis.fr

    mobis.fr Thread Starter MacUser Mitglied

    Mitglied seit:
    28.01.2004
    Beiträge:
    1.042
    Zustimmungen:
    4
    tach. ich hab da n programm in c/c++:

    Code:
    #include <stdio.h>
    int main(void) {
       char response;
       printf("Denk Dir eine Nummer zwischen 1 und 100 aus.\n");
       printf("Das errate ich in 7 oder weniger Versuchen \n\n");
       do {
          int lo = 1, hi = 100;
          int guess;
          while (lo <= hi) {
             guess = (lo + hi) / 2;
             printf("Ist es %d ",guess);
             printf(" ((h)oeher/(n)iedriger/(j)a): ");
             fflush(stdout);
             scanf("%c%*c",&response);
             if (response == 'h')
                lo = guess + 1;
             else if (response == 'n')
                hi = guess – 1;
             else if (response != 'j')
                printf("Erraten ... :-)");
             else
                break;
          }
          /* Resultat ausgeben */
          if (lo > hi)
             printf("Du schummelst!\n");
          else
             printf("Deine Nummer lautet: %d\n",guess);
          printf("Noch ein Spiel (j)a/nein : ");
          fflush(stdout);
          scanf("%c%*c",&response);
       } while( response == 'j' );
       return 0;
    }
    die fehlermeldung kommt immer vor dem ersten else if
    kann es sein, das der compiler den befehl nicht kennt?
    fehlermeldung geht immer: "expect ; before token"

    gruß
    mobis
     
  2. autoexec.bat

    autoexec.bat MacUser Mitglied

    Mitglied seit:
    21.01.2005
    Beiträge:
    2.113
    Zustimmungen:
    20
    Was auch immer das ist, es ist jedenfalls kein Minuszeichen. Da liegt der Fehler.
     
  3. mobis.fr

    mobis.fr Thread Starter MacUser Mitglied

    Mitglied seit:
    28.01.2004
    Beiträge:
    1.042
    Zustimmungen:
    4
    danke das wars.

    wie hast du das gesehen?
     
  4. Switch ist besser geeignet...

    Hi, sowas mit if zu machen ist keine gute Idee. Ich würde dir empfehlen die switch Abfrage zu benützen.

    Code:
    switch( response ) {
     case 'h'
               lo = guess + 1;
               break;
     case 'n'
               hi = guess – 1;
               break;
     case 'j'
               printf("Erraten ... :-)");
               break;
    }
    

    Gruß Daniel.
     
  5. chiaki

    chiaki MacUser Mitglied

    Mitglied seit:
    02.04.2005
    Beiträge:
    132
    Zustimmungen:
    0
    ändere mal

    Code:
    else if (response == 'n')
                hi = guess – 1;
    
    in
    Code:
    else if (response == 'n')  
              hi = guess--;
    
    könntest es bei lo = guess + 1; eigentlich auh in lo = guess++ machen, ist eleganter :p
     
  6. rash65

    rash65 unregistriert

    Mitglied seit:
    27.10.2004
    Beiträge:
    111
    Zustimmungen:
    0
    Ändere das mal lieber nicht so. Sonst wird lo zu guess und DANACH wird guess erst verändert. Wenn dann:
    Code:
    hi = ++guess;
    
    Aber als Anfänger würde ich solche Spielereien erstmal lassen, was da passieren kann siehst du ja...
     
  7. mobis.fr

    mobis.fr Thread Starter MacUser Mitglied

    Mitglied seit:
    28.01.2004
    Beiträge:
    1.042
    Zustimmungen:
    4
    ich weis, dass es effektivere methoden gibt,
    es ging bei der übung nur um diese else if anweisung... ;)

    aber danke das ihr euch damit beschäftigt habt



    gruß mobis
     
Die Seite wird geladen...