Zum Inhalt springen

Golfi1812

Mitglieder
  • Gesamte Inhalte

    12
  • Benutzer seit

  • Letzter Besuch

Beiträge von Golfi1812

  1. Das ist der gesamte Code:

    #include "std_lib_facilities.h"

    //------------------------------------------------------------------------------

    class Token {
    public:
    char kind; // welche Kategorie von Token
    double value; // für Zahlen: ein Wert
    Token(char ch) // erstelle ein Token aus einem char
    :kind(ch), value(0) { }
    Token(char ch, double val) // erstelle ein Token aus einem char und einem double
    :kind(ch), value(val) { }
    };

    //------------------------------------------------------------------------------

    Token get_token() // lies ein Token aus cin
    {
    char ch;
    cin >> ch; // beachten Sie, dass >> Whitespace-Zeichen wie
    // Leerzeichen, Zeilenumbruch, Tabulatorzeichen, etc. überspringt

    switch (ch) {
    //noch kein case ';': // für "Ausgeben"
    //noch kein case 'q': // für "Verlassen"
    case '(': case ')': case '+': case '-': case '*': case '/':
    return Token(ch); // jedes Zeichen repräsentiert sich selbst
    case '.':
    case '0': case '1': case '2': case '3': case '4':
    case '5': case '6': case '7': case '8': case '9':
    {
    cin.putback(ch); // lege die Ziffer zurück in den Eingabestream
    double val;
    cin >> val; // lies eine Gleitkommazahl
    return Token('8',val); // '8' repräsentiert "eine Zahl"
    }
    default:
    error("Ungueltiges Token");
    }
    }

    //------------------------------------------------------------------------------

    double expression(); // liest einen Ausdruck ein und wertet ihn aus

    //------------------------------------------------------------------------------

    double term(); // liest einen Token ein und wertet ihn aus

    //------------------------------------------------------------------------------

    double primary() // liest einen Faktor ein und wertet ihn aus
    {
    Token t = get_token();
    switch (t.kind) {
    case '(': // behandle'(' Ausdruck ')'
    {
    double d = expression();
    t = get_token();
    if (t.kind != ')') error("')' erwartet");
    return d;
    }
    case '8': // wir verwenden '8' zur Repräsentation einer Zahl
    return t.value; // liefere den Wert der Zahl zurück
    default:
    error("Faktor erwartet");
    }
    }
    //------------------------------------------------------------------------------

    int main()
    try {
    while (cin)
    cout << expression() << '\n';
    keep_window_open();
    }
    catch (exception& e) {
    cerr << e.what() << endl;
    keep_window_open();
    return 1;
    }
    catch (...) {
    cerr << "Ausnahme\n";
    keep_window_open();
    return 2;
    }

    //------------------------------------------------------------------------------

    double expression()
    {
    double left = term(); // liest einen Token ein und wertet ihn aus
    Token t = get_token(); // hole das nächste Tolen
    while(true) {
    switch(t.kind) {
    case '+':
    left += term(); // werte Term aus und addiere
    t = get_token();
    break;
    case '-':
    left -= term(); // werte Term aus und subtrahiere
    t = get_token();
    break;
    default:
    return left; // keine weiteren + oder –; Antwort zurückliefern
    }
    }
    }

    //------------------------------------------------------------------------------

    double term()
    {
    double left = primary();
    Token t = get_token(); // hole das nächste Tolen

    while(true) {
    switch (t.kind) {
    case '*':
    left *= primary();
    t = get_token();
    break;
    case '/':
    {
    double d = primary();
    if (d == 0) error("Division durch null");
    left /= d;
    t = get_token();
    break;
    }
    default:
    return left;
    }
    }
    }[/PHP]

    In der Funktion term wird direkt wieder primary() aufgerufen.

    Aber ich verstehe einfach eins nicht....................

    Was hat es mit dieser doublevariable namens left auf sich?

    Was wird in sie in den bestimmten Zeilen eingelesen und welchen Wert speichert sie wann und wo?

    Bitte klärt mich auf anhand der Zeilen wann und wo welche variable welchen Wert speichert und so weiter.

    Ich steh grade total auf dem Schlauch................

    Bitte helft mir doch einfach und gebt euch etwas Mühe!

    Danke

  2. Danke!

    Zitat von Golfi1812

    Sendet mit dem Befehl: "double left = term();" ,die variable

    left ihren Inhalt an term() und bekommt dann

    den Inhalt ausgewertet wieder zurück?

    Deine Antwort:

    Da wird nichts "gesendet". Die Funktion term wird aufgerufen, und der Rückgabewert wird in left gespeichert.

    Gut heißt das nun ,dass wenn zum Beispiel die doublevariable left den Wert 1.5 enthält, dass nun mit diesem Wert das Argument der Funktion term(); ist also term mit diesen 1.5 rechnet und dann z.b. 1 zurücksendet. Diese "1" wird nun in der double variable left abgelegt und wenn ich dann den Inhalt von left ausgeben lass wird 1 angezeigt?

    Habe ich das richtig verstanden?

  3. Hallo Leute,

    Ich lerne seit enigen Monaten C++ mit dem Buch: Einführung in die Programmierung mit C++ von Bjarne Stroustrup.

    Ich bin zur Zeit in Kapitel 6. Oft habe ich Schwierigkeiten gehabt und etwas nicht verstanden, dann habe ich das Kapitel solange wieder von vorne durchgearbeitet, bis ich es konnte.

    So habe ich es auch hier gemacht, doch ich verstehe einfach diese Funktion nicht ganz:



    6.5.2.1 Ausdrücke: Erster Versuch

    double expression()
    {
    double left = term(); // liest einen Token ein und wertet ihn aus
    Token t = get_token(); // hole das nächste Token
    while(true) {
    switch(t.kind) {
    case '+':
    left += term(); // werte Term aus und addiere
    t = get_token();
    break;
    case '-':
    left -= term(); // werte Term aus und subtrahiere
    t = get_token();
    break;
    default:
    return left; // keine weiteren + oder –; Antwort zurückliefern
    }
    }

    [/PHP]

    Es ist direkt der erste Befehl:

    double left = term();

    laut Kommentar wird hier ein Token eingelesen und ausgewertet.

    1.Von wo wird der Token eingelesen? //Muss alo in der Variable left ein Token abgelegt sein?

    2.Wohin wird er eingelesen?

    3.Wer wertet ihn aus? //Sendet mit dem Befehl: "double left = term();" ,die variable

    left ihren Inhalt an term() und bekommt dann

    den Inhalt ausgewertet wieder zurück?

    Ich hoffe ihr könnt mir weiter helfen. Vielen Dank

  4. Da muss ich dir wiedersprechen.

    Meiner Recherche nach gibt es Software,die es ermöglicht auf Windowscomputern Iphone Apps zu Programmieren und dass in C++!

    Zum Beispiel: iPhone Development on Windows | Windows iPhone SDK | C and C++ iPhone Development

    Das ist super und in C++ doch leider scheint es Schnittstellen bei der übertragung in den Appstore zu geben.

    Hat jemand diese Software und kann eine kleine Bewertung posten?

  5. Hallo Leute,

    Ich lerne seit ca. 0,5 - 1 Jahr C++ und nutze seit beginn die Windows Visual Studio 2010 als Compiler. Ein Freund und ich haben ein kleines Projekt am laufen indem es um das Programmieren eines simplen Iphone Spieles geht.

    Nun meine Frage:

    Gibt es ,möglichst kostenlose, Software zur Programmierung von Iphone Apps auf einem Windows PC in Visual Studio C++?

    Ich weiß bisher nur,dass man nur mit dem Development Kit von Apple auf Applecomputern Iphone Apps programmieren kann.

    Vielen Dank an alle Antwortenden.

    Mfg Golfi1812

  6. Hi Leute,

    Ich lerne seit einigen Monaten C++ mit einem Buch. Nun habe ich es als Aufgabe bekommen ein Spiel zu schreiben, indem sich der Benutzer eine Zahl zwischen 1 und 100 ausdenkt. Dann stellt der Computer dem Benutzer höchstens 7 Fragen, um die Zahl zu erraten.

    Ich probier seit mehreren Stunden herrum,aber komme einfach auf keinen grünen Pfad.

    Stehe total auf dem Schlauch.

    Kann mir jemand bitte helfen

  7. Hi Forumler

    Ich brauche für eine Projektpräsentation ein 3D Bild für ein Plakat.

    Ich habe keine Ahnung davon so ein Bild am PC zu pixeln, bzw. zu erstellen.

    Ist hier jemand der das kann oder kennt jemanden der das kann?

    Würde mir sehr helfen

    Vielen Dank schon mal im Vorraus

  8. Hallo Forumler

    Ich suche nach dem Bricx Command Center,welches ich auf meinem alten PC(Wi dows XP 32-bit) benutzt habe.

    Doch jetzt habe ich einen neuen PC (Windows7 64-bit).

    Bei der Installation trit immer wieder ein Fehler auf und ich habe ausserdem keine Version für Windows 7 64-bit getaktet gefunden.

    Kennt jemand eine Version (bitte links posten)

    Danke schonmal Im Vorraus

    Golfi1812

  9. Hallo liebe Forumler

    Das ist mein erster Beitrag und gleich ein Problem:

    Ich habe folgendes Programm geschrieben:

    
    #include "std_lib_facilities.h"
    
    #include "conio.h"
    
    
    int main()
    
    {
    
       cout << "Geben Sie einen Gleitkommawert ein: ";
    
       double n;
    
       cin >> n;
    
       cout << "n == " << n
    
          << "\nn+1 == " << n+1
    
          << "\ndreimal n == " << 3*n
    
          << "\nzweimal n == " << n+n
    
          << "\nn zum Quadrat == " << n*n
    
          << "\nHaelfte von n == " << n/2
    
          << "\nWurzel von n == " << sqrt(n)
    
          << endl;  
    
       getch();
    
       return 0;
    
    }
    
    

    Hier wird ja eine double Variable also eine Gleitkommazahl mit mehreren Operationen getestet.

    Doch leider wird die Gleitkommazahl nachdem sie z.b. dreimal genommen wird

    als integer Wert ausgeben,also nicht als Dezimalzahl so wie es sein soll

    (jedoch ist das nicht so bei dem Wurzel ziehen)

    Wie erreicht man eine Ausgabe als Dezimalwert?

    Vielen Dank schonmal im Vorraus.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...