Zum Inhalt springen

Golfi1812

Mitglieder
  • Gesamte Inhalte

    12
  • Benutzer seit

  • Letzter Besuch

  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. Woher kommt denn der Wert mit dem Term ausgeführt wird? Welcher wert ist das?
  3. Danke! Deine Antwort: 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?
  4. 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
  5. 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?
  6. 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
  7. 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
  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. Okay Danke an euch beide. Die headerdatei wird von einem Buch mit dem ich C++ lerne bereitgestellt. Das Programm ist als Beispielprogramm angegeben. Aber na gut. Ich werde jetzt den iostream benutzen . Danke
  10. Wenn die double 12.2 ist und sie wird verdreifacht sollte ja die Ausgabe 36.6 sein aber die Ausgabe ,die ich erhalte, ist 36. Übrignes: Ich programmiere mit Windows Visual 2010 Win32 Konsolenanwendungen (falls das relevant ist).
  11. 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...