<?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[Ausgabe Problem]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>habe ein Problem und zwar habe ich ein kleines Lotto-Programm geschrieben...<br />
Man muss eine Zahl eingeben und dann werden so viele Zufallsziehungen gemacht, wie eingegeben und dann sieht man, welche Zahl am häufigsten geozogen worden ist. Ich weis, ich weis, Homogenität der Zufallsgeneratoren... Darum geht es mir aber zur Übung nicht.</p>
<p>Ich lasse die &quot;random number&quot; ausgeben und mache ein endl - dadurch schiebt sich aber alles relativ schnell nach oben. Was ich gerne hätte, ist, dass es wie auf dem Screenshot aussieht und sich nur die Zahlen rechts neben dem Pfeil ändern und der rest statisch bleibt.</p>
<p>Screenshot: <a href="http://pl.vc/35n4a" rel="nofollow">http://pl.vc/35n4a</a></p>
<p>Wie mache ich das am Besten?<br />
Hier mein Code</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;
#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;iomanip&gt;
#include &lt;string&gt;

using namespace std;

int main(void) {
    system(&quot;mode con lines=80 cols=50&quot;);
    int in, i, random, OneToFifty[50];
    time_t t;
    time(&amp;t);
    srand((unsigned int)t);

    cout &lt;&lt; &quot;Bitte geben Sie eine Zahl ein: &quot;;
    cin &gt;&gt; in;

    system(&quot;cls&quot;);

    cout &lt;&lt; &quot;your number: &quot; &lt;&lt; in &lt;&lt; endl;
    cout &lt;&lt; &quot;hit any key to start nuke&quot; &lt;&lt; endl;
    fflush(stdin);
    cin.get();

    //Alle 50 Stellen im Array 0 setzen
    for (i=1;i&lt;51;i++) {
        OneToFifty[i] = 0;
    }

    //Zufallszahl ziehen und gezogene Zahl ausgeben und im Array hochzählen
    for (i=0;i&lt;in;i++) {
        random = rand() % 50 + 1;
        OneToFifty[random]++;
        cout &lt;&lt; &quot;random number: &quot; &lt;&lt; setw(10) &lt;&lt; random &lt;&lt; endl;
    }

    system(&quot;cls&quot;);

    //Hochgezähltes Array ausgeben
    for (i=1;i&lt;51;i++) {
        cout &lt;&lt; &quot;Number: &quot; &lt;&lt; setw(2) &lt;&lt; i &lt;&lt; &quot; -&gt; &quot;  &lt;&lt; OneToFifty[i] &lt;&lt; endl;
    }
}
</code></pre>
<p>Besten Dank and alle und auf einen Sieg für Deutschland! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/326898/ausgabe-problem</link><generator>RSS for Node</generator><lastBuildDate>Sat, 30 May 2026 15:07:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/326898.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 13 Jul 2014 18:14:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ausgabe Problem on Sun, 13 Jul 2014 18:14:02 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>habe ein Problem und zwar habe ich ein kleines Lotto-Programm geschrieben...<br />
Man muss eine Zahl eingeben und dann werden so viele Zufallsziehungen gemacht, wie eingegeben und dann sieht man, welche Zahl am häufigsten geozogen worden ist. Ich weis, ich weis, Homogenität der Zufallsgeneratoren... Darum geht es mir aber zur Übung nicht.</p>
<p>Ich lasse die &quot;random number&quot; ausgeben und mache ein endl - dadurch schiebt sich aber alles relativ schnell nach oben. Was ich gerne hätte, ist, dass es wie auf dem Screenshot aussieht und sich nur die Zahlen rechts neben dem Pfeil ändern und der rest statisch bleibt.</p>
<p>Screenshot: <a href="http://pl.vc/35n4a" rel="nofollow">http://pl.vc/35n4a</a></p>
<p>Wie mache ich das am Besten?<br />
Hier mein Code</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;
#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;iomanip&gt;
#include &lt;string&gt;

using namespace std;

int main(void) {
    system(&quot;mode con lines=80 cols=50&quot;);
    int in, i, random, OneToFifty[50];
    time_t t;
    time(&amp;t);
    srand((unsigned int)t);

    cout &lt;&lt; &quot;Bitte geben Sie eine Zahl ein: &quot;;
    cin &gt;&gt; in;

    system(&quot;cls&quot;);

    cout &lt;&lt; &quot;your number: &quot; &lt;&lt; in &lt;&lt; endl;
    cout &lt;&lt; &quot;hit any key to start nuke&quot; &lt;&lt; endl;
    fflush(stdin);
    cin.get();

    //Alle 50 Stellen im Array 0 setzen
    for (i=1;i&lt;51;i++) {
        OneToFifty[i] = 0;
    }

    //Zufallszahl ziehen und gezogene Zahl ausgeben und im Array hochzählen
    for (i=0;i&lt;in;i++) {
        random = rand() % 50 + 1;
        OneToFifty[random]++;
        cout &lt;&lt; &quot;random number: &quot; &lt;&lt; setw(10) &lt;&lt; random &lt;&lt; endl;
    }

    system(&quot;cls&quot;);

    //Hochgezähltes Array ausgeben
    for (i=1;i&lt;51;i++) {
        cout &lt;&lt; &quot;Number: &quot; &lt;&lt; setw(2) &lt;&lt; i &lt;&lt; &quot; -&gt; &quot;  &lt;&lt; OneToFifty[i] &lt;&lt; endl;
    }
}
</code></pre>
<p>Besten Dank and alle und auf einen Sieg für Deutschland! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2408414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408414</guid><dc:creator><![CDATA[h4XoR]]></dc:creator><pubDate>Sun, 13 Jul 2014 18:14:02 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Problem on Sun, 13 Jul 2014 18:17:17 GMT]]></title><description><![CDATA[<p>Meinst du das Tabulatorzeichen \t? &quot;Blabla\tBlabla&quot;;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2408415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408415</guid><dc:creator><![CDATA[Jodocus]]></dc:creator><pubDate>Sun, 13 Jul 2014 18:17:17 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Problem on Sun, 13 Jul 2014 18:22:35 GMT]]></title><description><![CDATA[<p>Der Datenstrom <code>stdout</code> (auf den <code>std::cout</code> gelenkt ist) stellt nur einen abstrakten Strom von Zeichen dar. Von einer Konsole o.ä. weiß der C++-Standard nichts.</p>
<p>Möglicherweise suchst du betriebssystemspezifische Funkionalitäten wie die die die WinAPI bereitstellt - für Windows. <code>system(&quot;cls&quot;)</code> könnte dich interessieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2408417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408417</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sun, 13 Jul 2014 18:22:35 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Problem on Sun, 13 Jul 2014 18:22:44 GMT]]></title><description><![CDATA[<p>Hallo Jodocus,</p>
<p>nein das Tabulator-Zeichen meine ich nicht.<br />
Ich weis nicht wie ich in der for-Schleife die feste Ausgabe integriere. Angenommen ich gebe 5.000 ein, dann wird 5.000 mal &quot;random number: &quot; und die Zahl ausgegeben. Ich möchte aber, dass die 50 festen Zahlen starr bleiben. Also 1-25 links und dann vielleicht ein /t <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /> 26-50 und die Anzahl die Ziehungen.<br />
Eben wie auf den Screenshot zu erkennen ist.</p>
<p>Es sollen sich aber nur die gezogenen Zahlen ändern, nicht die 1-25 und nicht die 26-50!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2408418</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408418</guid><dc:creator><![CDATA[h4XoR]]></dc:creator><pubDate>Sun, 13 Jul 2014 18:22:44 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Problem on Mon, 14 Jul 2014 09:51:24 GMT]]></title><description><![CDATA[<p>Dann rufe innerhalb deiner Schleife die Ausgabefunktion auf:</p>
<pre><code class="language-cpp">//Zufallszahl ziehen und gezogene Zahl ausgeben und im Array hochzählen
    for (i=0;i&lt;in;i++)
    {
        random = rand() % 50 + 1;
        OneToFifty[random]++;

        system(&quot;cls&quot;);

       //Hochgezähltes Array ausgeben
       for (i=1;i&lt;51;i++) {
         cout &lt;&lt; &quot;Number: &quot; &lt;&lt; setw(2) &lt;&lt; i &lt;&lt; &quot; -&gt; &quot;  &lt;&lt; OneToFifty[i] &lt;&lt; endl;
    }
</code></pre>
<p>(das zweispaltig auszugeben mußt du dann entsprechend selber anpassen...)</p>
<p>Wichtig: Dein Array ist aber um einen Wert zu klein, also</p>
<pre><code class="language-cpp">OneToFifty[51];
</code></pre>
<p>Daher am besten dafür eine Konstante anlegen:</p>
<pre><code class="language-cpp">const int MaxNumbers = 51;
</code></pre>
<p>und statt dem Magic-Value verwenden.<br />
Oder aber auf 50 belassen und dafür das Array nullbasiert indizieren!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2408468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408468</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Mon, 14 Jul 2014 09:51:24 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Problem on Mon, 14 Jul 2014 13:51:04 GMT]]></title><description><![CDATA[<p>Vielen Dank Th69 für deine Antwort! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Ich habe das Programm mal so angepasst, wie du es gesagt hast. Das Problem jetzt ist, es flackert wie verrückt. Er zeigt auch nur die Zeichen an bis 20 oder auch mal 23 und lädt dann sofort wieder neu. Woran es liegt, weis ich -&gt; system(&quot;cls&quot;) in der Schleife... Wie ich es besser mache, leider nicht - wer kann mir hier noch helfen?</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;
#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;iomanip&gt;
#include &lt;string&gt;

using namespace std;
const int MaxNumbers = 51;

int main(void) {
    system(&quot;mode con lines=80 cols=60&quot;);
    int in, i, random, OneToFifty[51];
    time_t t;
    time(&amp;t);
    srand((unsigned int)t);

    cout &lt;&lt; &quot;Bitte geben Sie eine Zahl ein: &quot;;
    cin &gt;&gt; in;

    system(&quot;cls&quot;);

    cout &lt;&lt; &quot;your number: &quot; &lt;&lt; in &lt;&lt; endl;
    cout &lt;&lt; &quot;hit any key to start win lottery&quot; &lt;&lt; endl;
    fflush(stdin);
    cin.get();

    //Alle 50 Stellen im Array 0 setzen
    for (i=1;i&lt;51;i++) {
        OneToFifty[i] = 0;
    }

    //Zufallszahl ziehen und gezogene Zahl ausgeben und im Array hochzählen
    for (i=0;i&lt;in;i++) {
        random = rand() % 50 + 1;
        OneToFifty[random]++;

        system(&quot;cls&quot;);

       //Hochgezähltes Array ausgeben
       for (i=1;i&lt;MaxNumbers;i++) {
           if (i&lt;26)
              cout &lt;&lt; &quot;Number: &quot; &lt;&lt; setw(2) &lt;&lt; i &lt;&lt; &quot; -&gt; &quot;  &lt;&lt; setw(7) &lt;&lt; OneToFifty[i] &lt;&lt; setw(5) &lt;&lt; &quot; &quot; &lt;&lt; &quot;Number: &quot; &lt;&lt; setw(2) &lt;&lt; i+25 &lt;&lt; &quot; -&gt; &quot;  &lt;&lt; setw(7) &lt;&lt; OneToFifty[i] &lt;&lt;endl;
       }
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2408506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408506</guid><dc:creator><![CDATA[h4XoR]]></dc:creator><pubDate>Mon, 14 Jul 2014 13:51:04 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Problem on Mon, 14 Jul 2014 14:53:05 GMT]]></title><description><![CDATA[<p>Unter Windows könntest du dir mal die <a href="http://www.c-plusplus.net/forum/307418" rel="nofollow">Improved Console</a> anschauen, so daß du dann nicht jedesmal den ganzen Bildschirm löschen mußt, sondern nur per SetPosition (oder gotoxy oder wie auch immer die Funktion dort heißt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /> den Cursor positionierst und nur die Zahlen überschreibst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2408543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408543</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Mon, 14 Jul 2014 14:53:05 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Problem on Mon, 14 Jul 2014 15:32:43 GMT]]></title><description><![CDATA[<p>Ein wenig Kritik:</p>
<ul>
<li><code>void</code> in einer leeren Parameterliste ist überflüssig - hier bei <code>main</code> .</li>
<li>Das Seeden in Zeilen 15-17 ist recht umständlich. Warum nicht</li>
</ul>
<pre><code>srand( time(0) );
</code></pre>
<ul>
<li>
<pre><code></code></pre>
</li>
</ul>
<p>fflush(stdin);</p>
<pre><code>
solltest du durch  

</code></pre>
<p>std::cin.ignore( std::numeric_limits<a href="std::streamsize" rel="nofollow">std::streamsize</a>::max(), '\n' );</p>
<pre><code>
ersetzen können. Das wird alle ungelesenen Zeichen im Puffer von `cin` löschen; wirkt hier aber irgendwie unvollständig, da du keine Fehlerbehandlung für die Eingabe in Zeile 20 gemacht hast.
*  Zeile 29-32 ist ein klassischer Fall für[ `std::fill` ](http://en.cppreference.com/w/cpp/algorithm/fill):  

</code></pre>
<p>std::fill( std::begin(OneToFifty), std::end(OneToFifty), 0 );</p>
<pre><code>
Es ginge auch mit `fill_n` \- wird aber ohne Magic Constants sicherlich genauso lang.
*  Warum verwendest du nur alle Elemente ab dem zweiten im Array `OneToFifty` ? Das erste bleibt ungenutzt.
*  Das If-Statement in der Schleife (Z. 43) ist extrem fragwürdig (und IIRC ein bekanntes Antipattern). Warum nicht gleich einfach bis `std::min(26, MaxNumbers)` hochlaufen - oder direkt `26` , wenn du weißt dass `MaxNumbers &gt;= 26` ?

&gt; Das Problem jetzt ist, es flackert wie verrückt.

Klar. Ein Schleifendurchlauf ist bei dir sehr kurz und wird `system(&quot;cls&quot;)` sehr oft pro Sekunde ausführen. Nimm Th69s Ansatz.  

&gt; hit any key to start win lottery

Ist auch ein unpassende Beschreibung da Eingaben auf der Konsole (u.a. unter Windows, also deinem System) Zeilenorientiert sind und dein Programm demnach nur nach drücken der Enter-Taste weiterlaufen wird. `getch` könnte eher sein was du suchst.</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2408547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408547</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 14 Jul 2014 15:32:43 GMT</pubDate></item></channel></rss>