Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » GCC und const und Performance Problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
27.02.2007, 16:55 Uhr
0xdeadbeef
Gott
(Operator)


Mmmh. Das ist richtig...naja. Setz ich mich bei Gelegenheit vielleicht mal ran. Wie gesagt, das ist alter Code, kann gut sein, dass ich den damals nicht zuende geschrieben habe.

Update:

C++:
#include <iostream>
#include <iterator>
#include <string>

class bf_interpreter {
public:
  bf_interpreter(std::string const &s)
    : code(s), i(0) { }

  void start() { ip(code); }

private:
  int i;
  char arr[30000];
  std::string code;

  void ip(std::string const &part) {
    std::string part_of_part;

    for(std::string::const_iterator itr = part.begin(); itr != part.end(); ++itr) {
      switch(*itr) {
      case '>': ++i; break;
      case '<': --i; break;
      case '+': ++arr[i]; break;
      case '-': --arr[i]; break;
      case '.': std::cout.put(arr[i]); break;
      case ',': arr[i] = std::cin.get(); break;
      case '[':
        {
          unsigned bc = 1;
          while(true) {
            ++itr;
            if       ( itr == part.end()) {
              throw itr;
            } else if(*itr == '[') {
              ++bc;
            } else if(*itr == ']') {
              --bc;
              if(bc == 0) break;
            }
            part_of_part += *itr;
          }

          while(arr[i])
            ip(part_of_part);
          break;
        }
      }
    }
  }
};

int main() {
  std::string s(std::istream_iterator<char>(std::cin),
                std::istream_iterator<char>());
  bf_interpreter bf(s);

  bf.start();
}


So sollte das gehen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 27.02.2007 um 17:03 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
27.02.2007, 17:00 Uhr
Blubber2063



Naja du kannst das recht leicht erweitern, der Code wird dadurch nicht viel länger und er läuft richtig, ich hab mich einfach dazu hinreißen lassen das so nach dem Stil den der PSS Prof. dieses Semester hatte mal auszuprobieren, für nen Compiler wäres ja auch nicht zu schlecht, aber für nen Interpreter ist die Prüfung der Eingabe zu langwierig und irgendwie auch die Ausführung, wobei ich immer noch nicht weiss warum mein Code so langsam ausführt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: