<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Brainfuck Interpreter]]></title><description><![CDATA[<p>Hallo,<br />
ich hoffe mal das ist kein kompletter Unsinn, aber ich habe mal einen Brainfuck Interpreter programmiert. Hat jemand einen Vorschlag, wie ich den verbessern kann?<br />
Einlesen eines Programms per Datei kommt noch, ich arbeite dran.</p>
<pre><code>// Brainfuck 1.1
#include &lt;iostream&gt;
#include &lt;string.h&gt;
using namespace std;
int i=0;
int pos=0;
int r[100];
int p=0;
char x[100];
int var=0;
int main() {
    cout &lt;&lt; &quot;       *** Brainfuck *** &quot; &lt;&lt; endl;
    cout &lt;&lt; endl;
    while(1) {
             cout &lt;&lt; &quot;OK&quot; &lt;&lt; endl;
             cin &gt;&gt; x;
             for(i=0;i&lt;=strlen(x);i++) 
             {
                  switch(x[i]) {
                               case '+':
                                    r[p]=r[p]+1;
                                    break;
                               case '-':
                                    r[p]=r[p]-1;
                                    break;
                               case '&lt;':
                                    p=p-1;
                                    break;
                               case '&gt;':
                                    p=p+1;
                                    break;
                               case '.':
                                    cout &lt;&lt; r[p] &lt;&lt; endl;
                                    break;
                               case ',':
                                    cin &gt;&gt; var;
                                    r[p]=var;
                                    break;
                               case '[':
                                    pos=i;
                                    break;
                               case ']':
                                    if(r[p] != 0) {
                                            i=pos;
                                            }
                                    break;
                               }
                  }
             }
}
</code></pre>
<p>Die Schleife find ich besonders lustig.<br />
Das Programm habe ich von meiner ersten BASIC Version hergeleitet.<br />
Ich habe noch eine Version in SmallBASIC geschrieben.</p>
<p>Hoffe der Code ist nicht zu dumm. Bin erst Anfänger.<br />
Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/329447/brainfuck-interpreter</link><generator>RSS for Node</generator><lastBuildDate>Tue, 26 May 2026 14:00:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/329447.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 Nov 2014 15:13:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Brainfuck Interpreter on Sun, 23 Nov 2014 15:13:46 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich hoffe mal das ist kein kompletter Unsinn, aber ich habe mal einen Brainfuck Interpreter programmiert. Hat jemand einen Vorschlag, wie ich den verbessern kann?<br />
Einlesen eines Programms per Datei kommt noch, ich arbeite dran.</p>
<pre><code>// Brainfuck 1.1
#include &lt;iostream&gt;
#include &lt;string.h&gt;
using namespace std;
int i=0;
int pos=0;
int r[100];
int p=0;
char x[100];
int var=0;
int main() {
    cout &lt;&lt; &quot;       *** Brainfuck *** &quot; &lt;&lt; endl;
    cout &lt;&lt; endl;
    while(1) {
             cout &lt;&lt; &quot;OK&quot; &lt;&lt; endl;
             cin &gt;&gt; x;
             for(i=0;i&lt;=strlen(x);i++) 
             {
                  switch(x[i]) {
                               case '+':
                                    r[p]=r[p]+1;
                                    break;
                               case '-':
                                    r[p]=r[p]-1;
                                    break;
                               case '&lt;':
                                    p=p-1;
                                    break;
                               case '&gt;':
                                    p=p+1;
                                    break;
                               case '.':
                                    cout &lt;&lt; r[p] &lt;&lt; endl;
                                    break;
                               case ',':
                                    cin &gt;&gt; var;
                                    r[p]=var;
                                    break;
                               case '[':
                                    pos=i;
                                    break;
                               case ']':
                                    if(r[p] != 0) {
                                            i=pos;
                                            }
                                    break;
                               }
                  }
             }
}
</code></pre>
<p>Die Schleife find ich besonders lustig.<br />
Das Programm habe ich von meiner ersten BASIC Version hergeleitet.<br />
Ich habe noch eine Version in SmallBASIC geschrieben.</p>
<p>Hoffe der Code ist nicht zu dumm. Bin erst Anfänger.<br />
Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2429153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2429153</guid><dc:creator><![CDATA[Christoph-C++]]></dc:creator><pubDate>Sun, 23 Nov 2014 15:13:46 GMT</pubDate></item><item><title><![CDATA[Reply to Brainfuck Interpreter on Sun, 23 Nov 2014 15:36:19 GMT]]></title><description><![CDATA[<p>Ein erster Schritt wäre es, den ganzen C-Kram loszuwerden und es in C++-Manier zu schreiben, das heißt erst mal: benutze std::vector (oder std::array) und std::string statt C-Strings.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2429156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2429156</guid><dc:creator><![CDATA[Jodocus]]></dc:creator><pubDate>Sun, 23 Nov 2014 15:36:19 GMT</pubDate></item><item><title><![CDATA[Reply to Brainfuck Interpreter on Sun, 23 Nov 2014 16:22:29 GMT]]></title><description><![CDATA[<p>Was ist mit verschachtelten [] ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2429163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2429163</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 23 Nov 2014 16:22:29 GMT</pubDate></item><item><title><![CDATA[Reply to Brainfuck Interpreter on Sun, 23 Nov 2014 17:01:18 GMT]]></title><description><![CDATA[<p>Die globalen Variablen sind auch nicht so toll...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2429172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2429172</guid><dc:creator><![CDATA[patrick246]]></dc:creator><pubDate>Sun, 23 Nov 2014 17:01:18 GMT</pubDate></item><item><title><![CDATA[Reply to Brainfuck Interpreter on Sun, 23 Nov 2014 19:03:44 GMT]]></title><description><![CDATA[<p>Warum sind die globalen Variablen nicht so toll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2429211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2429211</guid><dc:creator><![CDATA[Christoph-C++]]></dc:creator><pubDate>Sun, 23 Nov 2014 19:03:44 GMT</pubDate></item><item><title><![CDATA[Reply to Brainfuck Interpreter on Sun, 23 Nov 2014 19:23:51 GMT]]></title><description><![CDATA[<p>Christoph-C++ schrieb:</p>
<blockquote>
<p>Warum sind die globalen Variablen nicht so toll?</p>
</blockquote>
<p>Lokal ginge auch. An sich isses kein Unterschied; beide gehen.</p>
<p>Aber die alten Hasen sind schon dutzendmal reingefallen: Globale Vars waren erstmal einfacher, aber haben dann verhindert, daß man später was tolles einbauen konnte.</p>
<p>Fängt beim ersten Spiel an, sagen wie mal ein Würfelspiel wie Yhazehh, nachdem es klappt, nur einen Spielerr aufzunehmen, mach man auch 5 Spieler packen und später sogar ne KI machen. Min globalen variablen muss man dann alle globalen per Hand aufsammeln und lokale machen bevor man weitermachen kann. Total unnötig, hätte man sie gleich so lokal wie möglich gemacht.</p>
<p>Statt noch mehr Sachen aufzuzählen, bitte ich Dir, uns zu glauben. Lokal ist gut. Ganz viel später kotzt man, wenn man multithreading machen will und sich nicht an lokale gewöhnt hat. Zwischendurch ist fast immer lokal schneller: Der Compiler kan lokale Variablen besser optimieren. Und wenns Prog ein wenig größer wird, macht man aus Versehen Fehler und greift auf die falschen globalen Variablen zu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2429216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2429216</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 23 Nov 2014 19:23:51 GMT</pubDate></item><item><title><![CDATA[Reply to Brainfuck Interpreter on Sun, 23 Nov 2014 20:11:58 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/30598">@Christoph-C</a>++<br />
Ist mit 1-2 Sätzen wirklich nicht einfach zu erklären warum globale Variablen schlecht sind. Vor allem jemandem der es nicht selbst schon weiss <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /><br />
Glaub es volkard einfach. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2429230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2429230</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 23 Nov 2014 20:11:58 GMT</pubDate></item><item><title><![CDATA[Reply to Brainfuck Interpreter on Mon, 24 Nov 2014 19:39:08 GMT]]></title><description><![CDATA[<p>Also muss ich folgendes ersetzen:<br />
&lt;string&gt; durch &lt;vector&gt;<br />
Global durch lokal<br />
und verschachtelte Schleifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2429406</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2429406</guid><dc:creator><![CDATA[Christoph-C++]]></dc:creator><pubDate>Mon, 24 Nov 2014 19:39:08 GMT</pubDate></item><item><title><![CDATA[Reply to Brainfuck Interpreter on Mon, 24 Nov 2014 20:00:02 GMT]]></title><description><![CDATA[<p>&lt;string&gt; durch &lt;vector&gt; //&lt;string&gt; fände ich fein, aber nicht &lt;string.h&gt;<br />
Global durch lokal //jup!!<br />
und verschachtelte Schleifen //eher nicht, dein Interpreter macht das. Musst von [ zum passenden ] rennen können. Ich dächte daran, die [ und ] zwischendrin mit ++ und -- zu berarbeiten und bei ==0 ist die richtige ] gefunden oder so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2429409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2429409</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 24 Nov 2014 20:00:02 GMT</pubDate></item></channel></rss>