1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

[anfängerfrage] selbsgeschriebenes c++ programm hat einen Fehler.

Discussion in 'Programmieren' started by Das Q, May 3, 2009.

Thread Status:
Not open for further replies.
  1. Das Q

    Das Q ROM

    Hallo erstmal.

    Ich habe mich dazu entschlossen c++ zu lernen.
    nun bin ich über you.tube auf eine gute anleitung gestossen, und der autor hat in der lektion 2 die aufgabe erteilt ein programm zu schreiben, bei dem man eine zahl von 1 bis 10 erraten muss und man hat drei versuche. ich weiss, nichts weltbewegendes, aber jeder fängt mal klein an :rolleyes:. ich habe es versucht zu programmieren, aber bei mir kommt immer ein fehler beim kompilieren.

    wenn es sich jemand anschauen möge und mir weiterhelfen könnte, bin ich danach ganz happy.

    benutze Dev-c++

    Code:
    #include <iostream>
    
    using namespace std;
    
    int main();
      int loesung = 7;
      int versuch = 0;
      
        cout << "Erate die richtige Zahl von 1 bis 10         noch 3 versuche." endl;
        cin >> versuch;
        if (versuch == loesung);
    {cout << "das ist richtig!!!!!" << endl;
        system("PAUSE");
        return 0;
    }
    else; ()
    {
        cout << "falsch.              noch 2 versuche" endl;
    }
        
        cin >> versuch;
        if (versuch = loesung);
        {cout << "das ist richtig!!!!!" endl;
        system("PAUSE");
        return 0;}
        else; ()
    {
        cout << "falsch.                 noch ein versuch" endl;
    }
    
    cin >> versuch;
        if (versuch = loesung);
        {cout << "das ist richtig!!!!!" endl;
        system("PAUSE");
        return 0;
    }
        else; ()
    {
        cout << "falsch. Leider verloren" endl;
    
        system("PAUSE");
        return 0;
    }
    }
    
    Ich bin es mehrmals durchgegangen und konnte einfach keinen fehler finden.

    ich sag schon mal danke.
     
  2. Fettbemme

    Fettbemme Halbes Megabyte

    Hallo

    Es sind so einige Fehler in Deinem Programm von der Syntax her:

    Du hast keine ordentliche Main Funktion geschrieben, nur eine Definition einer Main Funtkion:

    Code:
    using namespace std;
    
    int main();
      int loesung = 7;
      int versuch = 0;
    Es sollte so in dieser Art sein:

    Code:
    using namespace std;
    
    int main()
    {
      int loesung = 7;
      int versuch = 0;
    
    
     [B] Noch ganz viel Code ab dieser Stelle[/B]
     
    }
    

    Du bist an einigen Stellen sehr spendabel mit dem "Semikolon".

    Hier so ein Beispiel in Deinem Quelltext:

    Code:
        if (versuch == loesung);
    {cout << "das ist richtig!!!!!" << endl;
        system("PAUSE");
        return 0;
    }
    Hinter der If Anweisung sollte kein Semikolon stehen, da ie If Anweisung mit den beiden {} ja weiter geht.

    So würde Deine if Anweisung bei mir aussehen:

    Code:
        if (versuch == loesung)
        { 
          cout << "das ist richtig!!!!!" << endl;
          system("PAUSE");
          return 0;
        }
    Es ist auch hilfreich sein Quelltext übersichtlich einzurücken. Es mag sein, dass Deine Enrückungen durch das Cut & Paste hier im Forum verloren gegangen sind, es ist nur ein Hinweis :)

    Ich hoffe die Hinweise haben einwenig geholfen...
     
  3. Das Q

    Das Q ROM

    erst mal Danke für die schnelle und ausführlich antwort.

    So viele Fehler:eek:. Ist halt meine allererstes programm, das ich frei zu schreiben versucht habe.

    Das mit dem int main() { hätte ich eigentlich sehen sollen:aua::aua:

    Ich habe mir das Video noch mal angesehen und tatsächlich: keine "Semikolon" nach dem if. jetzt wo ich es nochmal angesehen habe Ist es mir auch klar geworden.
    Danach habe ich alle Fehler ausgemerzt und den Code ein bischen struktuiert.


    Code:
    #include <iostream>
    
    using namespace std;
    
     int main()
      {
        int loesung = 7;
        int versuch = 0;
      
           cout << "Erate die richtige Zahl von 1 bis 10         noch 3 versuche." endl;
           cin >> versuch;
        if (versuch == loesung)
      {
           cout << "das ist richtig!!!!!" << endl;
           system("PAUSE");
           return 0;
      };
    
        else ()
      {
          cout << "falsch.  noch 2 versuche" endl;
      };
        
           cin >> versuch;
        if (versuch = loesung)
      {    
           cout << "das ist richtig!!!!!" endl;
           system("PAUSE");
           return 0;
      }
    
        else ()
      {
        cout << "falsch.      noch ein versuch" endl;
      };
      
           cin >> versuch;
        if (versuch = loesung);
           {cout << "das ist richtig!!!!!" endl;
           system("PAUSE");
           return 0;
      };
    
        else ()
      {
        cout << "falsch. Leider verloren" endl;
    
        system("PAUSE");
        return 0;
      };
      };
    
    leider bekomme ich weiterhin Fehler:
    z.B. Zeile 25:
    Code:
      {    cout << "das ist richtig!!!!!" endl; 
    in dieser zeile zeigt er mir immer
    . Das bedeutet doch, das vor "endl" ein "Semikolon" erwartet wird? :confused: ich hab im "Volkards C++-Kurs" nachgelesen und rausgefunden, dass auch nach den } klammern ein "Semikolon" steht. die habe ich eingefügt und es geht trotzdem nicht.

    Wäre nett, wenn sich jemand bereit erklären würde und es mir erklärt.
     
    Last edited: May 3, 2009
  4. daboom

    daboom Megabyte

    Der "<<" operator fehlt dort (und an einigen anderen stellen auch).

    Orientiere Dich dabei an der Zeile

    Code:
     cout << "das ist richtig!!!!!" << endl;
    
    "endl" ist dabei genauso ein Operand wie z.B. "das ist richtig!!!!!", diesen verknüpfst Du über den "<<" Operator mit dem Ergebnis der vorherigen Operation (also der links daneben sozusagen).
     
  5. Das Q

    Das Q ROM

    Gut, habe es nachgetragen und ein bischen ergänzt (bei "else" in die klammern "versuch = 0"gesetzt), nun muss sich noch irgendwo ein fehler verstecken

    Es wird mir angezeigt, dass in diesem abschnitt
    Code:
        };
        else ( versuch = 0)
    ein Fehler liegt: expected `;' before '}' token und expected primary-expression before "else". ich sehe aber keinen Fehler, im tutorial wird so etwas ähnliches auch verwenden und da klappte es auf anhieb :bahnhof:
     
  6. daboom

    daboom Megabyte

    Also wenn wir Dir jetzt hier in noch 12 Posts jeden Syntaxfehler aus Deinem Code rausfrickeln, lernst Du bestimmt kein C++.

    Du solltest Dir vielleicht erstmal über eher grundsätzliches Gedanken machen, wie z.B.:

    1. Form und Aufbau von Anweisungsblöcken (welche gibt es überhaupt -> if..else.., for.. , while..., do..while usw.)
    2. Hat es Sinn, eine Variable nochmal irgendwie zu belegen, obwohl sie nicht mehr genutzt wird (Warum möchtest Du "versuch" auf 0 setzen? Je nachdem, wo Du das machst überschreibst Du sogar die Eingabe des Nutzers)

    Wenn Du Dich damit etwas mehr beschäftigt hast, wirst Du schnell die aktuellen Fehler in Deiner Syntax finden und musst hier nicht wegen jedem, ich sag mal offensichtlichen, Fehler nachfragen.

    Nich böse gemeint, wirklich nicht... ;)
     
  7. kazhar

    kazhar Viertel Gigabyte

    2 fehler

    1: ein ; schlie&#223;t einen befehl ab wenn du also

    if (a==b) {
    ....
    };
    else {

    schreibst kriegst du nat&#252;rlich bei/vor dem else einen fehler, weil if durch das ; beendet wurde, also ist kein else mehr m&#246;glich

    2: das else kann keine bedingung haben. wenn du innerhalb des else zweiges eine abfrage brauchst musst du darin eine neue if abfrage machen (ich nehme mal an dass du ( versuch == 0) schreiben wolltes). also:

    if (a==b) {
    // tu etwas wenn a=b ist
    } else {
    if (a==1) {
    // tu etwas wenn a ungleich b aber gleich 1 ist
    } else {
    // tu etwas wenn a ungleich b und ungleich 1 ist
    } }
     
    Last edited: May 4, 2009
  8. Das Q

    Das Q ROM

    hab es endlich:cool:.

    Ich geb ja zu, es hat sich nach faulheit angehört, aber ich hatte einfach keinen plan, wo der fehler lag. Ich hätte sicherlich nicht ins forum geschrieben, wenn ich nicht verzweifelt gewesen wäre.

    Nun habe ich mir eine schöne liste aufgestellt mit den bisherigen begriffen und regeln und mit all denen sachen,wo ich aufpassen sollte.

    Meine überlegung war, dass der Ausgangswert immer auf 0 zurückkehrt, wenn man eine falsche zahl eingibt, ist eigentlich komplett sinnfrei, weil die "if" bedingung sowieso nicht eintritt.

    Ich habe mir extra in Grossbuchstaben auf meinen Notizen geschrieben: ÜBERLEGTER SEMIKOLONS EINSETZEN.

    Danke dass ihr mir geholfen habt:)


    fals irgendjemand auch anfängt zu programmieren und etwas input braucht, hier noch der vollstände Code:

    Code:
    #include <iostream>
    
    using namespace std;
    
     int main()
    {
        int loesung = 8;
        int versuch = 0;
      
           cout << "Erate die richtige Zahl von 1 bis 10         noch 3 versuche." << endl;
           cin >> versuch;
        if (versuch == loesung)
      {
           cout << "das ist richtig!!!!!" << endl;
           system("PAUSE");
           return 0;
      } 
        else
      {
           versuch = 0;
           cout << "falsch.              noch 2 versuche" << endl;
      };
        
           cin >> versuch;
        if (versuch == loesung)
      { 
           cout << "das ist richtig!!!!!" <<endl;
           system("PAUSE");
           return 0;
       }
        else 
       { 
            versuch = 0;
      
            cout << "falsch.                 noch ein versuch" << endl;
       };
      
            cin >> versuch;
        if (versuch == loesung)
           {cout << "das ist richtig!!!!!" << endl;
           system("PAUSE");
           return 0;
       }
        else 
       {
           versuch = 0;
           cout << "falsch. Leider verloren" << endl;
    
           system("PAUSE");
           return 0;
       }
    };
    
     
  9. 0John0

    0John0 Kbyte

    Hallo,ich habe auch angefangen zu Programmieren.
    Ich habe es zuerst auch über das Web versucht,aber das ist schwierig da man am besten mit den Grundlagen anfängt.
    Ich habe mir folgendes Buch geholt,und habe es jetzt den bald durchgearbeitet,also ich finde es ein gutes Anfängerbuch

    "C++ Programmieren mit einfach Beispielen"von Dirk Louis.

    Vielleicht kannst du dir dieses Buch holen und damit beginnen.

    Zu deinem Quelltext, ich weiss ja nicht wie weit du bist aber,ich würde vielleicht noch eine while-schleife einbauen das du nicht alles 3x schreiben müsstest.Nur ne idee:)
     
Thread Status:
Not open for further replies.

Share This Page