C Programm will nicht funktionieren



  • Hi,

    Dies ist mein erster Post hier und ich bin was C Programmierung angeht noch ein blutiger Anfänger.
    Ich habe mit einem kleinen und simplen Programm ein Problem und habe gehofft, dass mir vielleicht einer von euch helfen kann.
    Programm:

    #include <stdio.h>
    #define MAX 3
    #define LETTER a
    
    int main ()
    
    {
    char LETTER;
    char guess = 0 , enter = 0;
    int attempt = 1;
    
    /*int Versuche = MAX - attempt;*/
        while ((guess != LETTER) && (attempt <= MAX))
        {
    
            guess = getchar();
            enter = getchar();
        if (LETTER == guess)
        printf("RICHTIG!\n");
            else
            printf("Falsch\n");
    
            attempt++;
        }
    
        return 0;    
    }
    

    Programm bei mir nicht und ich bin mit meinem Latein am Ende.

    Bin für jede Antwort dankbar.

    MfG
    RiceBall



  • Was dein Programm machen soll hab ich jetzt mal geraten. Hoffe mein ECC-Algorithmus war gut genug.

    Davon ausgehend, dass du einen User raten lässt, welcher Buchstabe gesucht ist:

    #include <stdio.h>
    #define MAX 3
    #define LETTER a
    
    int main (void) { // Bei C ist min void vorgeschrieben
    //char LETTER; // Davon hast du keinen Nutzen, da du die Konstante hier schon mit LETTER erreichst
      char guess = 0;// , enter = 0; //unnötig
      int attempt = 0;
    
        //while ((guess != LETTER) && (attempt <= MAX)) // Warum kopf gesteuert, du hast noch keinen Wert in guess eingelesen.
      do {
          attempt++;
    // hier eventuell noch ein fflush nötig
          guess = getchar();
    //        enter = getchar(); // unnötig, wozu willst du ein Enter einlesen und speichern. Edit: für einen Versuch würden zwei Buchstaben abgefragt werde
          if (LETTER == guess)
            printf("RICHTIG!\n");
          else
            printf("Falsch\n");
    
      } while(attempt<=MAX&&LETTER != guess); // Wahlweise auch break in if 5 Zeilen höher möglich, um zweite Bedingung zu sparen
      return 0;
    }
    


  • #include <stdio.h> 
    #define MAX 3 
    #define LETTER 'a' 
    
    int main () 
    
    { 
    
    char guess =  0; 
    int attempt = 1; 
    
    /*int Versuche = MAX - attempt;*/ 
        while ((guess != LETTER) && (attempt <= MAX)) 
        { 
    
            guess = getchar(); 
    
        if (LETTER == guess) 
        printf("RICHTIG!\n"); 
            else 
            printf("Falsch\n"); 
    
            attempt++;
            getchar();
        } 
    
        return 0;     
    }
    


  • Für einen erklärten blutigen Anfänger geht das gezeigte Beispiel bereits etwas zu weit und ist unübersichtlich. Vorschlag zum Lernen: erst einmal ohne while-Schleife probieren und sehen was läuft oder nicht laufen will.



  • Erstmal vielen Dank für die schnellen Antworten.
    Endlich funktioniert es und ich versteh jetzt auch wo Probleme waren bzw. was sinnlos ist^^. Vielen Dank.
    Und ja, ich bin Anfänger, aber das Programm war von mir selbst geschrieben und sah auch teilweise unnötig bzw. unübersichtlich aus, weil ich durch das Problem vieles am abändern war.
    Aber durch eure Hilfe hab ich es jetzt verstanden. Vielleicht werd ich mir mal ein paar einfachere Sachen erstmal vornehmen, mal schauen :).

    Ansonsten vielen Dank nochmal. Super schnelle Antwort.

    MfG
    RiceBall


Anmelden zum Antworten