<?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 mit Funktion]]></title><description><![CDATA[<p>Wie kann ich dieses Programm ohne die Funktion schreiben ?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void dez_bin(long int z);

void main() 
{
long int dezimal;

cout&lt;&lt;&quot;Geben Sie die dezimale Zahl ein: &quot;;
cin&gt;&gt;dezimal;

cout&lt;&lt;&quot;Binäre Darstellung:\n&quot;;

dez_bin ( dezimal);

system(&quot;PAUSE&quot;);
}

  void dez_bin(long int z)
  {

        if (z&gt;0)
        {
                dez_bin(z/2);
                cout&lt;&lt;z%2;
        }

  }
</code></pre>
<p>Ich kriegs irgenwie nicht hin ich bekomme immer 1 als Ergebniss raus -.-</p>
<p>Was genau macht die Funktion da anderes ?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void dez_bin(long int z);

void main() 
{
long int dezimal;
long int erg;

cout&lt;&lt;&quot;Geben Sie die dezimale Zahl ein: &quot;;
cin&gt;&gt;dezimal;

cout&lt;&lt;&quot;Binäre Darstellung:\n&quot;;

        if (dezimal &gt; 0 )
        {
          erg = dezimal / 2;
          cout&lt;&lt;&quot;binär zahl 1: &quot;&lt;&lt;dezimal%2&lt;&lt;endl;

        }

system(&quot;PAUSE&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/229227/problem-mit-funktion</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 00:45:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/229227.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 Dec 2008 10:27:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Funktion on Tue, 09 Dec 2008 10:27:25 GMT]]></title><description><![CDATA[<p>Wie kann ich dieses Programm ohne die Funktion schreiben ?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void dez_bin(long int z);

void main() 
{
long int dezimal;

cout&lt;&lt;&quot;Geben Sie die dezimale Zahl ein: &quot;;
cin&gt;&gt;dezimal;

cout&lt;&lt;&quot;Binäre Darstellung:\n&quot;;

dez_bin ( dezimal);

system(&quot;PAUSE&quot;);
}

  void dez_bin(long int z)
  {

        if (z&gt;0)
        {
                dez_bin(z/2);
                cout&lt;&lt;z%2;
        }

  }
</code></pre>
<p>Ich kriegs irgenwie nicht hin ich bekomme immer 1 als Ergebniss raus -.-</p>
<p>Was genau macht die Funktion da anderes ?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void dez_bin(long int z);

void main() 
{
long int dezimal;
long int erg;

cout&lt;&lt;&quot;Geben Sie die dezimale Zahl ein: &quot;;
cin&gt;&gt;dezimal;

cout&lt;&lt;&quot;Binäre Darstellung:\n&quot;;

        if (dezimal &gt; 0 )
        {
          erg = dezimal / 2;
          cout&lt;&lt;&quot;binär zahl 1: &quot;&lt;&lt;dezimal%2&lt;&lt;endl;

        }

system(&quot;PAUSE&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1627515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627515</guid><dc:creator><![CDATA[func]]></dc:creator><pubDate>Tue, 09 Dec 2008 10:27:25 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktion on Tue, 09 Dec 2008 10:44:27 GMT]]></title><description><![CDATA[<p>die Funktion ruft sich immer wieder selbst auf (Rekursion), siehe Zeile 30<br />
solltest vielleicht dir n Tutorial dazu anschauen, wenn dir das nicht ganz klar ist</p>
<p>um die Funktion &quot;nachzubauen&quot;, müsstest du in deinem Programm ohne die Funktion die Berechnung in eine Schleife bauen<br />
z.B. so:</p>
<pre><code class="language-cpp">while (dezimal &gt; 0)
{
    erg = dezimal / 2;
    cout&lt;&lt;&quot;binär zahl 1: &quot;&lt;&lt;dezimal%2&lt;&lt;endl;
}
</code></pre>
<p>so ungefähr muss es dann lauten !</p>
<p><strong>PS:</strong><br />
es heißt <strong>int</strong> main() und nicht void main() !!<br />
und es fehlt ein return 0 am Ende deines Programms (um mal ganz genau zu sein <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/1627524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627524</guid><dc:creator><![CDATA[R3dNeXX]]></dc:creator><pubDate>Tue, 09 Dec 2008 10:44:27 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktion on Tue, 09 Dec 2008 11:11:38 GMT]]></title><description><![CDATA[<p>Erm R3dnexx?<br />
Also wenn man nun eine solche Schleife mit Abbruchbedingung schreibt, sollte man natürlich auch dafür sorgen, dass diese Bedingung irgendwann einmal auftritt <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="🙂"
    /><br />
Und da die rekursive Funktion in sich die Bitfolge schon umdreht, musst du sowas natürlich auch simulieren durch einen entsprechenden Zwischenspeicher. Ansonsten würdest du ja zuerst mod 2 machen, dann durch 2 teilen und dann wieder mod 2. Wenn du das dann ausgibst, ist die Binärfolge falschherum.<br />
Irgendwie so:</p>
<pre><code class="language-cpp">unsigned int zahl = 5235235;
unsigned int mask = 1 &lt;&lt; 31;     // Oberstes Bit gesetzt

while( mask &amp;&amp; !(mask &amp; zahl) ) mask &gt;&gt;= 1; // Führende Nullen überspringen
do {
    std::cout &lt;&lt; ((zahl &amp; mask)&gt;0);   // bool wird als 0 oder 1 ausgegeben
    mask &gt;&gt;= 1;
} while( mask );   // Eine 0 soll immer ausgegeben werden
</code></pre>
<p>Das klappt natürlich in dem Fall nur mit 32-Bit-unsigned Integern. Wahrscheinlich ist mir jetzt etwas entgangen, wie man das wesentlich einfacher machen kann <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>
<p>MfG,<br />
Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627530</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 09 Dec 2008 11:11:38 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktion on Tue, 09 Dec 2008 10:58:25 GMT]]></title><description><![CDATA[<p>Ok danke, ich werd mir mal diese Rekursion Sachen anschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627531</guid><dc:creator><![CDATA[func]]></dc:creator><pubDate>Tue, 09 Dec 2008 10:58:25 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktion on Tue, 09 Dec 2008 11:02:35 GMT]]></title><description><![CDATA[<p>R3dNeXX schrieb:</p>
<blockquote>
<p><strong>PS:</strong><br />
und es fehlt ein return 0 am Ende deines Programms (um mal ganz genau zu sein <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>
</blockquote>
<p>Nein, das tut es nicht (um mal ganz genau zu sein) <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<pre><code class="language-cpp">int main()
{}
</code></pre>
<p>ist völlig korrekt, da jeder standard-konforme Compiler das <code>return 0;</code> selbstständig ans Ende der main-Fkt (und nur dort) setzt...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627534</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 09 Dec 2008 11:02:35 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktion on Tue, 09 Dec 2008 11:03:51 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/34233">@Decimad</a>:<br />
du hast natürlich recht, sorry, bin heut sowieso etwas durcheinander <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>
<p>ps: denke das nächste Mal etwas mehr nach !!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627535</guid><dc:creator><![CDATA[R3dNeXX]]></dc:creator><pubDate>Tue, 09 Dec 2008 11:03:51 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktion on Tue, 09 Dec 2008 11:56:28 GMT]]></title><description><![CDATA[<p>Ich hab das gerade einfach mal ohne Abbruchbedinung und so ausprobiert.</p>
<p>Ich hab einfach mal eine 7 eingeben als Ergebniss müsste ja dann kommen 111</p>
<p>Aber ich bekomme immer nur eine 1 ausgegeben.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void main() 
{
long int dezimal;
long int erg;

cout&lt;&lt;&quot;Geben Sie die dezimale Zahl ein: &quot;;
cin&gt;&gt;dezimal;

cout&lt;&lt;&quot;Binäre Darstellung:\n&quot;;

        while (dezimal &gt; 0)
        {
            erg = dezimal / 2;
            cout&lt;&lt;&quot;binär zahl: &quot;&lt;&lt;dezimal%2&lt;&lt;endl;

        }

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1627564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627564</guid><dc:creator><![CDATA[func]]></dc:creator><pubDate>Tue, 09 Dec 2008 11:56:28 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktion on Tue, 09 Dec 2008 14:22:55 GMT]]></title><description><![CDATA[<p>mit diesem algorythmus gehts. Musst halt nur die genauigkeit mit angeben. Also wieviel bits deine zahl hat.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

int main()
{
    int zahl=7;
    for(int i=32;i&gt;=0;i--)
    {
        if((1&lt;&lt;i) &amp; zahl)
            cout &lt;&lt; &quot;1&quot;;
        else
            cout &lt;&lt; &quot;0&quot;;
    }
    cout &lt;&lt; endl;
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1627645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627645</guid><dc:creator><![CDATA[blups0r]]></dc:creator><pubDate>Tue, 09 Dec 2008 14:22:55 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktion on Tue, 09 Dec 2008 14:30:15 GMT]]></title><description><![CDATA[<p>func schrieb:</p>
<blockquote>
<pre><code class="language-cpp">void main()
</code></pre>
</blockquote>
<p>Es wäre dennoch schön, wenn du dir alle Anmerkungen durchliest. &quot;void main&quot; ist immer noch kein gültiges C++ und war es auch noch nie, auch wenn dein Compiler es akzeptieren mag, und man es ab und zu in schlechten Büchern/Tutorials sieht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627652</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 09 Dec 2008 14:30:15 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktion on Wed, 10 Dec 2008 10:29:58 GMT]]></title><description><![CDATA[<p>Hallo func,</p>
<p>in Deinem Programm (Code vom 09.12.2008, 12:56) weist du der Variablen 'erg' einmal 'dezimal' halbe zu, aber die Variable 'dezimal' änderst Du nirgends in der wile-Schleife. Damit kann die Abbruchbedingung nie erfüllt werden (wenn die dezimalzahl nicht 0 oder 1 ist) und du hast eine Endlosschleife die andauernd lediglich 'binär zahl: 0/1' ausgibt.<br />
Weiterhin erhälst du keine Ausgabe bei 'dezimal' = 0, weil Du dann nicht in die Schleife zur Ausgabe kommst.</p>
<p>Folgender Vorschlag:<br />
- Du brauchst eine Schleife, in die du erstmal immer reinkommst für Verarbeitung von dezimal 0: do-while.<br />
- innerhalb der Schleife erfolgt nur die Umwandlung mit Zwischenspeicherung des Ergebnisses (mache ich hier mit einem std::ostringstream)<br />
- Die Ausgabe erfolgt nach der Schleife nach Umkehrung der Ziffernreihenfolge im string</p>
<pre><code class="language-cpp">#include &lt;conio.h&gt;       // für getch() - nicht sehr schön

#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;       // für Umwandlung von integer nach string 
#include &lt;algorithm&gt;     // für reverse()

int main()
{
   unsigned long int dezimal;

   std::cout &lt;&lt; &quot;Geben Sie eine positive dezimale Zahl ein: &quot;;
   std::cin &gt;&gt; dezimal;

// Umwandlung
   std::ostringstream ss;
   do {
       ss &lt;&lt; (dezimal%2);
       dezimal = dezimal / 2;
       }
   while (dezimal &gt; 0);

// Reihenfolge der binärziffern umdrehen
   std::string erg(ss.str());
   reverse(erg.begin(), erg.end());

// Ausgabe
   std::cout &lt;&lt; &quot;Binäre Darstellung: &quot; &lt;&lt; erg &lt;&lt; std::endl;

// schließen der Konsole verhindern - quick and dirty
   std::cout &lt;&lt; &quot;Taste zum beenden&quot;;
   getch();

   return 0;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1628094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628094</guid><dc:creator><![CDATA[mario_69_]]></dc:creator><pubDate>Wed, 10 Dec 2008 10:29:58 GMT</pubDate></item></channel></rss>