000
18.02.2007, 13:10 Uhr
Suba Esel
|
Ich schreib grad an einem Brainfuck - Compiler in C++, hab aber keinen blassen Schimmer, wie ich Schleifen machen soll.
C++: |
#include <iostream> #include <fstream> #include <vector>
void Ausfuehren(std::vector<std::string> brainfuck);
int main() { std::cout << "Brainfuck - Compiler\nFreeware" << std::endl;
std::vector<std::string> programm; std::string temp; std::getline(std::cin, temp); programm.push_back(temp); Ausfuehren(programm); }
void Ausfuehren(std::vector<std::string> brainfuck) { int p[10000]; int *current_value = &p[0];
for(int i = 0; i < brainfuck.size(); ++i) { for(int j = 0; j < brainfuck[i].size(); ++j) { std::string zeile = brainfuck[i]; switch(zeile[j]) { case '>': ++current_value; break;
case '<': --current_value; break;
case '+': *current_value+=1; break;
case '-': *current_value-=1; break;
case '.': std::cout << char(*current_value); break;
case ',': *current_value = getchar(); break;
case '[': // und jetzt? } } } }
|
Testprogramm ohne Schleifen:
Code: |
++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++.>++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++.+++++++..+++.>++++++++++++++++++++++++++++++++.<<+ ++++++++++++++.>.+++.------.--------.>+.>++++++++++.
|
Testprogramm mit Schleifen:
Code: |
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..++ +.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
|
Die Programme geben beide "Hello World!" aus.
Ach ja, falls noch jemand ne Möglichkeit weiß, wie man die Eingabe auf ein Zeichen beschränken kann, wäre ich sehr dankbar, da das ganze ein array ist, wird sonst nämlich einfach in die nächsten Zellen geschrieben. An sowas wie std::cin.width(1); std::cin >> *current_value; hab ich schon gedacht, allerdings lässt sich das cin, warum auch immer, so nicht anwenden.
Ach ja, noch was: gibts eine möglichkeit, wie man in der Konsole formatierten Text, also mit Zeilenumbrüchen, eingeben kann? Die werden ja sonst als "Enter" interpretiert, deshalb kann man das Programm oben auch so nicht einfügen.
Bearbeitung: |
hab mir mal erlaubt den Threadtopic anzupassen
|
-- Simon Dieser Post wurde am 21.02.2007 um 17:56 Uhr von FloSoft editiert. |