Taschenrechner für Learning by Doing



  • Also, kann ich mir irgendwo einen C++ Taschenrechner Source runterladen um zu gucken wie alle Funktioniet und mir somit ein bisschen C++ aneignen?
    Ich will nicht wissen ob es sonnvoll ist sondern wo ich so beispiele ect. runterladen kann die einen Taschenrechner Quellcode



  • Das ist sicher nicht der einfachste Weg, das Problem zu lösen, aber die wichtigsten Sprachkonstrukte kommen drin vor:

    #include <iostream>
    #include <sstream>
    #include <string>
    
    template<typename type>
    type read_from_cin(std::string const &prompt) {
      std::string eingabe;
      std::stringstream sstr;
      type ret;
    
      do {
        sstr.clear();
    
        std::cout << prompt << std::flush;
        std::getline(std::cin, eingabe);
    
        sstr.str(eingabe);
        sstr >> ret;
      } while(!sstr);
    
      return ret;
    }
    
    class calculator {
    public:
      calculator();
      void operator()() const;
    };
    
    calculator::calculator() { }
    
    void calculator::operator()() const {
      double x, y;
      char op;
    
      do
        op = read_from_cin<char>("Operator eingeben (+, -, *, /): ");
      while(op != '+' && op != '-' && op != '*' && op != '/');
    
      x = read_from_cin<double>("Operand 1 eingeben: ");
      y = read_from_cin<double>("Operand 2 eingeben: ");
    
      std::cout << x << ' ' << op << ' ' << y << " = " << std::flush;
      switch(op) {
      case '+': std::cout << x + y << std::endl; break;
      case '-': std::cout << x - y << std::endl; break;
      case '*': std::cout << x * y << std::endl; break;
      case '/': std::cout << x / y << std::endl; break;
      }
    }
    
    int main() {
      calculator calc;
      calc();
    }
    


  • ich denk mal er meint so einen wie den windowstaschenrechner.. son ding hat ich mal in längst vergessenen tagen programmiert, aber in C und selbst wenn ich den quellcode noch irgendwo finden würde, würde ich ihn lieber nicht veröffentlichen (schon garnicht als lernbeispiel ;)).

    btw. warum programmierste nicht einfach selber einen oo (entspricht imho auch eher "lerning by doing" als quellcodes zu lesen..)



  • life schrieb:

    ich denk mal er meint so einen wie den windowstaschenrechner..

    http://volkard.de/C++/FAQ/Windows-Programmierung/Erstellen_einer_kleinen_Windows-Anwendung_mit_dem_MSVC60/index.html



  • ich weiß nicht, aber irgendwie werd ich das gefühl nicht los, dass der windowstaschenrechner dem deinigen überlegen ist :p



  • 0xdeadbeef schrieb:

    Das ist sicher nicht der einfachste Weg, das Problem zu lösen, aber die wichtigsten Sprachkonstrukte kommen drin vor:

    disclaimer: ich meckere nur an der aussage rum.

    aber unangemessen.

    vor allen und jeden std:: zu hauen taug nicht. man darf ruhig die using-direktive benutzen. nur in header-files verbietet es sich. bis du in nem header? das erinnert mich an endlose regeln des strukturierten programmierens, wo die leute am liebsten an die regeln glaubten, die weh taten. und medicin kann auch nicht wirken, wenn sie nicht bitter ist.

    read_from_cin gefällt mir nicht. kann aber sein, daß deine version die beste ist.

    class calculator ist schrecklich. eine ansonsten leere klasse, die nur eine funktion beherbergt hätte besser eine funktion werden sollen.

    do
    op = read_from_cin<char>("Operator eingeben (+, -, , /): ");
    while(op != '+' && op != '-' && op != '
    ' && op != '/');

    mhmm. read_from_cin<char> ist echt besser als cin>>op?

    vielleicht sollte diese schleife ausgelagert werden und nicht die andere?

    x und y deutlich zu früh definiert.

    wozu std::flush?

    "die wichtigsten Sprachkonstrukte" sind sicher nicht switch und so-schleifen, da die while-schleife hundertmal häufiger vorkommt und praktisch switch gar nicht mehr vorkommt.


Anmelden zum Antworten