<?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[Problem bei Zahlenspielerei (Anfängerfrage - wahrscheinlich dummer Fehler)]]></title><description><![CDATA[<p>ich versuche gerade das Spielchen bei dem man durch Eingrenzung eine Zahl &quot;erraten&quot; muss nachzubauen aber das Programm will nicht wie ich will.<br />
Der Mensch denkt sich eine Zahl zwischen einem Anfangswert und einem Endwert und das Programm grenzt sie mit der Information ob die Zahl größer oder kleiner ist immer weiter ein.</p>
<pre><code>#include &lt;iostream&gt;

int main()
{
int a, m, e, c=0;
std::cin&gt;&gt;a; // Anfangswert
std::cin&gt;&gt;e; //Endwert
do
{
int g;  //  zum feststellen ob die zahl größer oder kleiner als m ist  (1 = größer / 0 = kleiner)
m=(a+e)/2; // m soll der mittelwert zw. anfangswert und endwert sein
std::cout&lt;&lt;m;
std::cin&gt;&gt;g; 
switch(g)
 { case 1: a=m; // die gedachte zahl ist größer als m also soll der anfangswert auf m gesetzt werden (endwert bleibt gleich)
  break;
  case 0: e=m; // die gedachte zahl ist kleiner als m also soll der endwert auf m gesetzt werden (anfangswert bleibt gleich)
 break;
 default: break;
}; 

c=c+1;  // nur ein kleiner zähler um zu sehen wieviele versuche es gebraucht hat (spielerei)
} while(a=e); // anfangswert entspricht dem endwert =&gt; zahl weit genug eingegrenzt

std::cout&lt;&lt;&quot;Deine Zahl ist: &quot;&lt;&lt;a&lt;&lt;&quot; und ich hab nur &quot;&lt;&lt;c&lt;&lt;&quot; Züge gebraucht ;)\n&quot;;

system(&quot;pause&quot;);
};
</code></pre>
<p>also g ist nur dazu da dass der Mensch dem Programm sagen kann ob die gedachte zahl größer oder oder kleiner als m ist. Wenn für g eine 1 eingegeben wird dann wird für die Anfangsvariable der Mittelwert genommen und bei 0 wird für die Endvariable der Mittelwert genommen. Danach wird im nächsten Durchlauf m neu als Mittelwert zwischen a und e berechnet. So soll die zahl immer weiter eingegrenzt werden bis Anfangswert (a) und Endwert (e) die gleiche ganze Zahl sind.<br />
g wird bei jedem Durchlauf &quot;geleert&quot; weil sie ja bei jedem durchlauf wieder neu eingeführt wird.</p>
<p>So solls zumindest sein<br />
ich hoffe es ist ersichtlich was ich meine und wo mein dummer Fehler liegt.</p>
<p>schon mal danke für eure Hilfe und nicht lachen bitte ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/242340/problem-bei-zahlenspielerei-anfängerfrage-wahrscheinlich-dummer-fehler</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 02:18:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242340.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 02 Jun 2009 16:29:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem bei Zahlenspielerei (Anfängerfrage - wahrscheinlich dummer Fehler) on Tue, 02 Jun 2009 17:12:45 GMT]]></title><description><![CDATA[<p>ich versuche gerade das Spielchen bei dem man durch Eingrenzung eine Zahl &quot;erraten&quot; muss nachzubauen aber das Programm will nicht wie ich will.<br />
Der Mensch denkt sich eine Zahl zwischen einem Anfangswert und einem Endwert und das Programm grenzt sie mit der Information ob die Zahl größer oder kleiner ist immer weiter ein.</p>
<pre><code>#include &lt;iostream&gt;

int main()
{
int a, m, e, c=0;
std::cin&gt;&gt;a; // Anfangswert
std::cin&gt;&gt;e; //Endwert
do
{
int g;  //  zum feststellen ob die zahl größer oder kleiner als m ist  (1 = größer / 0 = kleiner)
m=(a+e)/2; // m soll der mittelwert zw. anfangswert und endwert sein
std::cout&lt;&lt;m;
std::cin&gt;&gt;g; 
switch(g)
 { case 1: a=m; // die gedachte zahl ist größer als m also soll der anfangswert auf m gesetzt werden (endwert bleibt gleich)
  break;
  case 0: e=m; // die gedachte zahl ist kleiner als m also soll der endwert auf m gesetzt werden (anfangswert bleibt gleich)
 break;
 default: break;
}; 

c=c+1;  // nur ein kleiner zähler um zu sehen wieviele versuche es gebraucht hat (spielerei)
} while(a=e); // anfangswert entspricht dem endwert =&gt; zahl weit genug eingegrenzt

std::cout&lt;&lt;&quot;Deine Zahl ist: &quot;&lt;&lt;a&lt;&lt;&quot; und ich hab nur &quot;&lt;&lt;c&lt;&lt;&quot; Züge gebraucht ;)\n&quot;;

system(&quot;pause&quot;);
};
</code></pre>
<p>also g ist nur dazu da dass der Mensch dem Programm sagen kann ob die gedachte zahl größer oder oder kleiner als m ist. Wenn für g eine 1 eingegeben wird dann wird für die Anfangsvariable der Mittelwert genommen und bei 0 wird für die Endvariable der Mittelwert genommen. Danach wird im nächsten Durchlauf m neu als Mittelwert zwischen a und e berechnet. So soll die zahl immer weiter eingegrenzt werden bis Anfangswert (a) und Endwert (e) die gleiche ganze Zahl sind.<br />
g wird bei jedem Durchlauf &quot;geleert&quot; weil sie ja bei jedem durchlauf wieder neu eingeführt wird.</p>
<p>So solls zumindest sein<br />
ich hoffe es ist ersichtlich was ich meine und wo mein dummer Fehler liegt.</p>
<p>schon mal danke für eure Hilfe und nicht lachen bitte ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719811</guid><dc:creator><![CDATA[Alexandra]]></dc:creator><pubDate>Tue, 02 Jun 2009 17:12:45 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Zahlenspielerei (Anfängerfrage - wahrscheinlich dummer Fehler) on Tue, 02 Jun 2009 17:22:06 GMT]]></title><description><![CDATA[<blockquote>
<p>schon mal danke für eure Hilfe und nicht lachen bitte ^^</p>
</blockquote>
<p>Bis jetzt finde ichs eher zum heulen ;).</p>
<p>1. Benutze bitte C/C++ Code Tags<br />
2. Bitte richtig einrücken<br />
3. Sinnvolle Variablen namen helfen nicht nur uns<br />
4. Wo liegt denn das Problem? &quot;will nicht so wie ich will&quot; ist eine recht offene Beschreibung</p>
<p>#edit:</p>
<p>Ich hab das mit dem Einrücken grade mal gemacht:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int main()
{
    int a, m, e, c=0;
    std::cin&gt;&gt;a; // Anfangswert
    std::cin&gt;&gt;e; //Endwert

    do
    {
        int g;  //  zum feststellen ob die zahl größer oder kleiner als m ist  (1 = größer / 0 = kleiner)
        m=(a+e)/2; // m soll der mittelwert zw. anfangswert und endwert sein
        std::cout&lt;&lt;m;
        std::cin&gt;&gt;g;

        switch(g)
        {
            case 1: 
                a=m; // die gedachte zahl ist größer als m also soll der anfangswert auf m gesetzt werden (endwert bleibt gleich)
                break;
            case 0: 
                e=m; // die gedachte zahl ist kleiner als m also soll der endwert auf m gesetzt werden (anfangswert bleibt gleich)
                break;
            default:
                break;
        };

        c=c+1;  // nur ein kleiner zähler um zu sehen wieviele versuche es gebraucht hat (spielerei)
    } while(a=e); // anfangswert entspricht dem endwert =&gt; zahl weit genug eingegrenzt

    std::cout&lt;&lt;&quot;Deine Zahl ist: &quot;&lt;&lt;a&lt;&lt;&quot; und ich hab nur &quot;&lt;&lt;c&lt;&lt;&quot; Züge gebraucht ;)\n&quot;;

    system(&quot;pause&quot;);
}
</code></pre>
<p>*gah* falsch verstanden -.-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719817</guid><dc:creator><![CDATA[blub* 0]]></dc:creator><pubDate>Tue, 02 Jun 2009 17:22:06 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Zahlenspielerei (Anfängerfrage - wahrscheinlich dummer Fehler) on Tue, 02 Jun 2009 16:51:26 GMT]]></title><description><![CDATA[<p>also g ist nur dazu da dass der Mensch dem Programm sagen kann ob die gedachte zahl größer oder oder kleiner als m ist. Wenn für g eine 1 eingegeben wird dann wird für die Anfangsvariable der Mittelwert genommen und bei 0 wird für die Endvariable der Mittelwert genommen. Danach wird im nächsten Durchlauf m neu als Mittelwert zwischen a und e berechnet. So soll die zahl immer weiter eingegrenzt werden bis Anfangswert (a) und Endwert (e) die gleiche ganze Zahl sind.<br />
g wird bei jedem Durchlauf &quot;geleert&quot; weil sie ja bei jedem durchlauf wieder neu eingeführt wird.</p>
<p>So solls zumindest sein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719826</guid><dc:creator><![CDATA[Alexandra]]></dc:creator><pubDate>Tue, 02 Jun 2009 16:51:26 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Zahlenspielerei (Anfängerfrage - wahrscheinlich dummer Fehler) on Tue, 02 Jun 2009 17:15:32 GMT]]></title><description><![CDATA[<p>Denke das problem liegt hier:</p>
<pre><code class="language-cpp">do{
   .....

   } while(a=e); //Sollte das nicht (a!=e) heissen?
</code></pre>
<p>Wenn ich es so compile mit (a!=e), dann geht er solange weiter bis er die Zahl gefunden hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719844</guid><dc:creator><![CDATA[Neo Gandar]]></dc:creator><pubDate>Tue, 02 Jun 2009 17:15:32 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Zahlenspielerei (Anfängerfrage - wahrscheinlich dummer Fehler) on Tue, 02 Jun 2009 17:16:56 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt; 

int main() 
{ 
    int grenze_unten;
    std::cin &gt;&gt; grenze_unten; // Anfangswert 
    int grenze_oben;
    std::cin &gt;&gt; grenze_oben; //Endwert 

    int versuch;
    int zaehler(0);

    int relation; //hier wäre ein enum sicherlich sehr viel sinnvoller ^^
    //&gt;0 größer
    //0 richtig
    //&lt;0 kleiner

    do
    {
        versuch = (grenze_unten + grenze_oben) /2; //mittelwert
        std::cout &lt;&lt; versuch;

        std::cin &gt;&gt; relation;

        if(relation &lt; 0)
            grenze_oben = versuch;
        if(relation &gt; 0)
            grenze_unten = versuch;

        ++zaehler;
    } while (relation);

    std::cout &lt;&lt; &quot;Deine Zahl ist: &quot; &lt;&lt; versuch &lt;&lt; &quot; und ich habe nur &quot; &lt;&lt; zaehler &lt;&lt; &quot; Versuche gebraucht!&quot; &lt;&lt; std::endl;

    system(&quot;pause&quot;); //wieso man es so nicht machen sollte: siehe konsolen-faq
}
</code></pre>
<p>bb</p>
<p>Man könnte Relation noch in die Schleife packen, die beiden Bedingungen auf &lt;= und &gt;= ändern und auf <code>grenze_oben != grenze_unten</code> testen... Weiß nicht, was da besser wäre...</p>
<p>Ich habe versucht, bessere Variablen-Namen zu nutzen und alles sehr simpel zu halten - falls es dennoch zu hoch für dich ist, solltest du mal fragen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719846</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 02 Jun 2009 17:16:56 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Zahlenspielerei (Anfängerfrage - wahrscheinlich dummer Fehler) on Tue, 02 Jun 2009 17:18:50 GMT]]></title><description><![CDATA[<p>UI es funktioklappt danke schön für die Hilfe.. Ich glaub ich habe inzwischen entdeckt dass ich while und until verwechselt habe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719849</guid><dc:creator><![CDATA[Alexandra]]></dc:creator><pubDate>Tue, 02 Jun 2009 17:18:50 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Zahlenspielerei (Anfängerfrage - wahrscheinlich dummer Fehler) on Tue, 02 Jun 2009 17:21:26 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<pre><code class="language-cpp">system(&quot;pause&quot;); //wieso man es so nicht machen sollte: siehe konsolen-faq
</code></pre>
</blockquote>
<p>ich mach es so weil sich ohne das mein AntiVir meldet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719853</guid><dc:creator><![CDATA[Alexandra]]></dc:creator><pubDate>Tue, 02 Jun 2009 17:21:26 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Zahlenspielerei (Anfängerfrage - wahrscheinlich dummer Fehler) on Tue, 02 Jun 2009 17:23:22 GMT]]></title><description><![CDATA[<p>Es klappt, obwohl du nur das = in ein != geändert hast?<br />
glaub ich nicht?<br />
was machst du, wenn der pc das richtige ergebnis getippt hat?<br />
richtig - du hast nich ma die möglichkeit, dem zu sagen, dass es richtig ist, weil du nur größer oder kleiner kennst und keines zutrifft - allerdings machst du dann nichts, wenn keines zutrifft...</p>
<p>bb</p>
<p>edit:</p>
<blockquote>
<p>antivir</p>
</blockquote>
<p>lol?</p>
<p>also meins meldet sich bei so etwas nicht:</p>
<pre><code class="language-cpp">std::cin.clear();
std::cin.ignore( std::cin.rdbuf()-&gt;in_avail() );
std::cin.get();
</code></pre>
<p>was bitte machst du denn, dass sich antivir meldet und was sagt es denn dann? Oo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719855</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 02 Jun 2009 17:23:22 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Zahlenspielerei (Anfängerfrage - wahrscheinlich dummer Fehler) on Tue, 02 Jun 2009 17:27:50 GMT]]></title><description><![CDATA[<p>es hat irgendetwas mit einem kill-befehl gesagt.. kann natürlich auch sein dass es nur ein zufall war und gar nichts damit zu tun hat.</p>
<p>doch es klappt weil ich ihm ja dann sage dass die richtige Zahl größer UND kleiner ist was dazu führt dass erst der anfangswert und dann der endwert auf m gesetzt wird somit ist a!=e nicht erfüllt und er geht aus der schleife raus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719858</guid><dc:creator><![CDATA[Alexandra]]></dc:creator><pubDate>Tue, 02 Jun 2009 17:27:50 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Zahlenspielerei (Anfängerfrage - wahrscheinlich dummer Fehler) on Tue, 02 Jun 2009 17:33:03 GMT]]></title><description><![CDATA[<p>unskilled hat da durchaus recht, so funktioniert es nicht.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16305">@unskilled</a> Wobei deiner Version muss man ja auch sagen das die Zahl richtig ist. So wie ich den Code von Alexandra interpretiere mit dem</p>
<pre><code class="language-cpp">while(a!=e)
</code></pre>
<p>Sollte das Programm das ja selber auf die Reihe kriegen. Letztlich müsste man ja nur prüfen:</p>
<pre><code class="language-cpp">while(e-a &gt; 2)
// Ausgabe ist dann
std::cout &lt;&lt; a+1 &lt;&lt; std::endl;
</code></pre>
<p>Dann würde er es selber merken.</p>
<p>#edit:</p>
<p>Mach mal:<br />
a = 0<br />
e = 10</p>
<p>Die gedachte Zahl ist 6<br />
Er sagt 5, du gibst 1 ein -&gt; größer<br />
Er sagt 7 du gibst 0 ein -&gt; kleiner</p>
<p>Damit ist die 6 als Ergebnis schon klar er sagt allerdings wiederum 6.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719862</guid><dc:creator><![CDATA[blub* 0]]></dc:creator><pubDate>Tue, 02 Jun 2009 17:33:03 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Zahlenspielerei (Anfängerfrage - wahrscheinlich dummer Fehler) on Tue, 02 Jun 2009 17:36:28 GMT]]></title><description><![CDATA[<p>ja, das war mit sicherheit zufall... kannst es ja ma ausprobieren...</p>
<p>Alexandra schrieb:</p>
<blockquote>
<p>doch es klappt weil ich ihm ja dann sage dass die richtige Zahl größer UND kleiner ist</p>
</blockquote>
<pre><code class="language-cpp">do
    {
        int g;  //  zum feststellen ob die zahl größer oder kleiner als m ist  (1 = größer / 0 = kleiner)
        m=(a+e)/2; // m soll der mittelwert zw. anfangswert und endwert sein
        std::cout&lt;&lt;m;
        std::cin&gt;&gt;g;

        switch(g)
        {
            case 1: 
                a=m; // die gedachte zahl ist größer als m also soll der anfangswert auf m gesetzt werden (endwert bleibt gleich)
                break;
            case 0: 
                e=m; // die gedachte zahl ist kleiner als m also soll der endwert auf m gesetzt werden (anfangswert bleibt gleich)
                break;
            default:
                break;
        };

        c=c+1;  // nur ein kleiner zähler um zu sehen wieviele versuche es gebraucht hat (spielerei)
    } while(a!=e); // anfangswert entspricht dem endwert =&gt; zahl weit genug eingegrenzt
</code></pre>
<p>also mal paar anmerkungen: da er niemals 2 mal die gleiche zahl nacheinander rät (es sei denn, untere grenze == obere grenze), kannst du nicht größer und kleiner auf einmal angeben...<br />
außerdem hast du ihn dann um einen versuch beschissen : P</p>
<p>ahja...</p>
<blockquote>
<p>Wobei deiner Version muss man ja auch sagen das die Zahl richtig ist.</p>
</blockquote>
<p>Und wie spielst du Zahlenraten?<br />
Sagst du auch immer, dass der andere die falsche Zahl hat, auch wenn er die richtige erraten hat? Oo<br />
Natürlich muss man ihm sagen, dass es die richtige Zahl ist - genau, wie man ihm sagen muss, dass die Zahl zu klein oder zu groß ist... ~~</p>
<p>nimm bei dem bsp. mal 5 als gesuchte zahl und versuch, dass das prgramm auf 5 kommt (also bei der meldung, dass es die zahl rausbekommen hat)... -.-</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719864</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 02 Jun 2009 17:36:28 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Zahlenspielerei (Anfängerfrage - wahrscheinlich dummer Fehler) on Tue, 02 Jun 2009 17:42:11 GMT]]></title><description><![CDATA[<p>ja das wäre mein nächster Gedanke gewesen mit dem e-a&gt;2 aber jetzt funktioniert schomal das Grundgerüst jetzt ist der Rest nur noch Kosmetik ^^</p>
<p>also der erste Fehler war while und until verwechsderlt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
der zweite war die Erkennung der richtigen Zahl (Gemurkse mit größér UND kleiner)</p>
<p>Danke an Alle kann geclosed werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719869</guid><dc:creator><![CDATA[Alexandra]]></dc:creator><pubDate>Tue, 02 Jun 2009 17:42:11 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Zahlenspielerei (Anfängerfrage - wahrscheinlich dummer Fehler) on Tue, 02 Jun 2009 17:41:00 GMT]]></title><description><![CDATA[<p>Zugegebenermaßen, da hab ich wohl nen Denkfehler gehabt...</p>
<p>Das funktioniert alles nur solange er die gesuchte Zahl nicht anzeigt, du hast Recht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719872</guid><dc:creator><![CDATA[blub* 0]]></dc:creator><pubDate>Tue, 02 Jun 2009 17:41:00 GMT</pubDate></item></channel></rss>