<?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[Objektübergabe-Problem]]></title><description><![CDATA[<p>hallo kann mir mal jemand hier helfen?</p>
<p>Das problem liegt bei der Funktion multiplizieren2()</p>
<p>die daten von objekt b1 und b2 sollen multipliziert werden da sklappt schonmal. und dann soll an b3 der bruch zurückgegebn werden.. nur irtgdnwie klappt da snicht so ganz, kann jemand helfen?</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;cmath&gt;

class Bruch{
      private:
              int m_nenner;
              int m_zaehler;
      public:
             Bruch();
             Bruch(int z, int n);
             void ausgeben();
             Bruch multiplizieren2(Bruch be1, Bruch be2);
      };

using namespace std;

// MAIN
int main()
{
cout&lt;&lt;&quot;Erzeugen Sie die Bruche b1=4/12, b2=4/3 und b3&quot;&lt;&lt;endl;
    Bruch b1(4,12);
    Bruch b2(4,3);
    Bruch b3;    

cout&lt;&lt;&quot;\nMultiplizieren Sie b1 mit b2 mit Hilfe der Mitgliedsfunktion multiplizieren2&quot;&lt;&lt;endl;
    b1.multiplizieren2(b2, b3);
    b3.ausgeben();

    system(&quot;PAUSE&quot;);
    return 0;
}
// END MAIN
// KONSTRUKT
Bruch::Bruch(){
     m_zaehler=1;
     m_nenner=1;
}
Bruch::Bruch(int z, int n){
     m_zaehler=z;
     m_nenner=n;
     }

void Bruch::ausgeben(){
     cout&lt;&lt;&quot;Ausgabe:\nDer Bruch lautet: (&quot;&lt;&lt;m_zaehler&lt;&lt;&quot;/&quot;&lt;&lt;m_nenner&lt;&lt;&quot;)&quot;&lt;&lt;endl;
     }

Bruch Bruch::multiplizieren2(Bruch be1, Bruch be2){
     be2.m_zaehler=m_zaehler*be1.m_zaehler;
     be2.m_nenner=m_nenner*be1.m_nenner;
     return be2;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/239561/objektübergabe-problem</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 08:01:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/239561.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 24 Apr 2009 20:38:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Objektübergabe-Problem on Fri, 24 Apr 2009 20:38:38 GMT]]></title><description><![CDATA[<p>hallo kann mir mal jemand hier helfen?</p>
<p>Das problem liegt bei der Funktion multiplizieren2()</p>
<p>die daten von objekt b1 und b2 sollen multipliziert werden da sklappt schonmal. und dann soll an b3 der bruch zurückgegebn werden.. nur irtgdnwie klappt da snicht so ganz, kann jemand helfen?</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;cmath&gt;

class Bruch{
      private:
              int m_nenner;
              int m_zaehler;
      public:
             Bruch();
             Bruch(int z, int n);
             void ausgeben();
             Bruch multiplizieren2(Bruch be1, Bruch be2);
      };

using namespace std;

// MAIN
int main()
{
cout&lt;&lt;&quot;Erzeugen Sie die Bruche b1=4/12, b2=4/3 und b3&quot;&lt;&lt;endl;
    Bruch b1(4,12);
    Bruch b2(4,3);
    Bruch b3;    

cout&lt;&lt;&quot;\nMultiplizieren Sie b1 mit b2 mit Hilfe der Mitgliedsfunktion multiplizieren2&quot;&lt;&lt;endl;
    b1.multiplizieren2(b2, b3);
    b3.ausgeben();

    system(&quot;PAUSE&quot;);
    return 0;
}
// END MAIN
// KONSTRUKT
Bruch::Bruch(){
     m_zaehler=1;
     m_nenner=1;
}
Bruch::Bruch(int z, int n){
     m_zaehler=z;
     m_nenner=n;
     }

void Bruch::ausgeben(){
     cout&lt;&lt;&quot;Ausgabe:\nDer Bruch lautet: (&quot;&lt;&lt;m_zaehler&lt;&lt;&quot;/&quot;&lt;&lt;m_nenner&lt;&lt;&quot;)&quot;&lt;&lt;endl;
     }

Bruch Bruch::multiplizieren2(Bruch be1, Bruch be2){
     be2.m_zaehler=m_zaehler*be1.m_zaehler;
     be2.m_nenner=m_nenner*be1.m_nenner;
     return be2;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1700932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1700932</guid><dc:creator><![CDATA[Crisis10]]></dc:creator><pubDate>Fri, 24 Apr 2009 20:38:38 GMT</pubDate></item><item><title><![CDATA[Reply to Objektübergabe-Problem on Fri, 24 Apr 2009 22:42:23 GMT]]></title><description><![CDATA[<p>Ändere</p>
<pre><code class="language-cpp">cout&lt;&lt;&quot;\nMultiplizieren Sie b1 mit b2 mit Hilfe der Mitgliedsfunktion multiplizieren2&quot;&lt;&lt;endl;
    b1.multiplizieren2(b2, b3);
    b3.ausgeben();
</code></pre>
<p>in</p>
<pre><code class="language-cpp">cout&lt;&lt;&quot;\nMultiplizieren Sie b1 mit b2 mit Hilfe der Mitgliedsfunktion multiplizieren2&quot;&lt;&lt;endl;
    b3 = b1.multiplizieren2(b1, b2); // Ergebnis b3 zuweisen
    b3.ausgeben();
</code></pre>
<p>Noch ein paar kleine Anmerkungen:</p>
<pre><code class="language-cpp">#include &lt;stdlib.h&gt;
</code></pre>
<p>sollte</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
</code></pre>
<p>heißen, wobei du den Header gar nicht in deinem Code einbinden müsstest. Und Außerdem noch:</p>
<pre><code class="language-cpp">system(&quot;PAUSE&quot;);
</code></pre>
<p>Böse, böse ;). In der FAQ gibt es eine Erklärung wie man auch ohne <em>system</em> das Schließen des Konsolenfensters verhindern kann. Siehe folgenden Link:<br />
<a href="http://c-plusplus.net/forum/viewtopic-var-t-is-111042.html" rel="nofollow">http://c-plusplus.net/forum/viewtopic-var-t-is-111042.html</a><br />
<strong>EDIT:</strong> Irgendwie stelle ich gerade fest, dass das Ergebnis dann nicht mehr ganz korrekt ist. Du solltest dir wohl noch die Berechnung von <em>Bruch multiplizieren2(Bruch be1, Bruch be2);</em> anschauen.<br />
<strong>Edit die 2.te:</strong> Hah, so wird ein Schuh draus:</p>
<pre><code class="language-cpp">class Bruch{ 
      private: 
              int m_nenner; 
              int m_zaehler; 
      public: 
             Bruch(); 
             Bruch(int z, int n); 
             void ausgeben(); 
             void multiplizieren2(Bruch be1, Bruch be2); // Rückgabetyp geändert
      }; 
/* ... */
cout&lt;&lt;&quot;\nMultiplizieren Sie b1 mit b2 mit Hilfe der Mitgliedsfunktion multiplizieren2&quot;&lt;&lt;endl; 
    b3.multiplizieren2(b1, b2); 
    b3.ausgeben();
/* ... */
void Bruch::multiplizieren2(Bruch be1, Bruch be2){ 
     m_zaehler=be1.m_zaehler*be2.m_zaehler; 
     m_nenner=be1.m_nenner*be2.m_nenner; 
}
</code></pre>
<p>Rest wie oben von dir gepostet :).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1700966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1700966</guid><dc:creator><![CDATA[Mizar]]></dc:creator><pubDate>Fri, 24 Apr 2009 22:42:23 GMT</pubDate></item><item><title><![CDATA[Reply to Objektübergabe-Problem on Sat, 25 Apr 2009 12:33:32 GMT]]></title><description><![CDATA[<p>hi, danke für die rasche antwort.</p>
<p>aber kann das stimemn mit dem void?</p>
<p>also hier nochmal die genaue aufgabenstellung, hab ich leider vergessen sry<br />
..</p>
<p>multiplizieren2: multipliziert die beiden im Argument mitgelieferten Br¨ uche zusammen. Das Ergebnis wird einem<br />
dritten Bruch gespeichert, der von der Funktion zur¨ uckgegeben wird. (statische Funktion, ¨ oﬀentlich zug¨ anglich)</p>
<p>und dann in main:</p>
<p>Multiplizieren Sie b1 mit b2 mit Hilfe der statischen Funktion multiplizieren2. Weisen das Ergebnis b3 zu. Geben<br />
Sie das Ergebnis aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701108</guid><dc:creator><![CDATA[Crisis10]]></dc:creator><pubDate>Sat, 25 Apr 2009 12:33:32 GMT</pubDate></item><item><title><![CDATA[Reply to Objektübergabe-Problem on Sat, 25 Apr 2009 16:01:18 GMT]]></title><description><![CDATA[<p>Crisis10 schrieb:</p>
<blockquote>
<p>multiplizieren2: [...] (statische Funktion, ¨ oﬀentlich zug¨ anglich)</p>
</blockquote>
<p>Das Problem ist schonmal das die von dir gepostete <em>multiplizieren2</em>-Funktion nicht statisch ist. Das Zauberwort heißt in diesem Falle also <em>static</em>:</p>
<pre><code class="language-cpp">class Bruch{
/* ... */
public:
    static Bruch multiplizieren2(Bruch be1, Bruch be2); // Deklariert statische, öffentlich zugängliche Elementfunktion
};
</code></pre>
<p>Der Aufgabenstellung nach müsste diese so definiert werden:</p>
<pre><code class="language-cpp">Bruch Bruch::multiplizieren2(Bruch be1, Bruch be2){
	 Bruch ergebnis;
     ergebnis.m_zaehler = be1.m_zaehler * be2.m_zaehler; 
     ergebnis.m_nenner = be1.m_nenner * be2.m_nenner; 
	 return ergebnis;
}
</code></pre>
<p>Was man aber auch ein klein wenig kürzer schreiben könnte:</p>
<pre><code class="language-cpp">Bruch Bruch::multiplizieren2(Bruch be1, Bruch be2){ 
    return Bruch(be1.m_zaehler * be2.m_zaehler, be1.m_nenner * be2.m_nenner);
}
</code></pre>
<p>Tja, jetzt musst du nur noch die 2. Aufgabe lösen:</p>
<p>Crisis10 schrieb:</p>
<blockquote>
<p>und dann in main:</p>
<p>Multiplizieren Sie b1 mit b2 mit Hilfe der statischen Funktion multiplizieren2. Weisen das Ergebnis b3 zu. Geben<br />
Sie das Ergebnis aus.</p>
</blockquote>
<p>2 Tipps:<br />
Ein statisches Klassenelement kann entweder direkt über die Klasse mit Hilfe des Gültigkeitsoperators oder indirekt über ein Objekt (oder auch Referenz oder Zeiger auf ein Objekt) des Klassentyps aufgerufen werden. Zum Beispiel:</p>
<pre><code class="language-cpp">Klasse::statische_funktion(); // Direkter Aufruf einer statischen Funktion mittels des Gültigkeitsoperators '::'
</code></pre>
<p>Und der zweite Tipp bezieht sich auf den Zuweisungsoperator der einem Objekt einen Wert zuweist. Ein Beispiel:</p>
<pre><code class="language-cpp">int x(3);
int y(5);
x = y; // Der Zuweisungsoperator '=' weist x den Wert von y zu
</code></pre>
<p>So, damit solltest du jetzt die Aufgabe lösen können :).</p>
<p><strong>Edit:</strong> Argh, hatte ein Semikolon im Code vergessen. Passiert mir ständig :D.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701186</guid><dc:creator><![CDATA[Mizar]]></dc:creator><pubDate>Sat, 25 Apr 2009 16:01:18 GMT</pubDate></item><item><title><![CDATA[Reply to Objektübergabe-Problem on Sun, 26 Apr 2009 16:04:06 GMT]]></title><description><![CDATA[<p>hi, ahjaa ok ich glaub ich habs fast gecheckt fehlt nurnoch die frage warum das jetzt hier nicht so klappt:</p>
<p>Also es sollte so sein da sich in main nur einen parameter übergen möchte/soll</p>
<pre><code class="language-cpp">b3 = b1.multiplizieren2(b2);
b3.ausgeben();
</code></pre>
<pre><code class="language-cpp">Bruch Bruch::multiplizieren2(Bruch be1){
     Bruch erg;
     erg.m_zaehler=m_zaehler*be1.m_zaehler;
     erg.m_nenner=m_nenner*be1.m_nenner;
     return erg;   
}
</code></pre>
<p>jetzt meckert er leider das ja m_nenner/zaehler nicht in den static bereich fallen. hab da grade nen denkfehler, aber könnte mand as vllt nochn bissl ändern auf die art die ich jetzt probiert habe udn halt auch so das nur ein argument übergen wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701557</guid><dc:creator><![CDATA[Crisis10]]></dc:creator><pubDate>Sun, 26 Apr 2009 16:04:06 GMT</pubDate></item><item><title><![CDATA[Reply to Objektübergabe-Problem on Sun, 26 Apr 2009 16:35:46 GMT]]></title><description><![CDATA[<p>Crisis10 schrieb:</p>
<blockquote>
<p>Also es sollte so sein da sich in main nur einen parameter übergen möchte/soll</p>
</blockquote>
<p>Der Aufgabe nach sollen aber 2 Brüche übergeben werden:</p>
<blockquote>
<p>multiplizieren2: <strong>multipliziert die beiden im Argument mitgelieferten Br¨ uche zusammen</strong>. Das Ergebnis wird einem<br />
dritten Bruch gespeichert, der von der Funktion zur¨ uckgegeben wird. (statische Funktion, ¨ oﬀentlich zug¨ anglich)</p>
</blockquote>
<p>Crisis10 schrieb:</p>
<blockquote>
<p>hab da grade nen denkfehler, aber könnte mand as vllt nochn bissl ändern auf die art die ich jetzt probiert habe udn halt auch so das nur ein argument übergen wird?</p>
</blockquote>
<p>Mhmmm... ich verstehe ehrlich gesagt nicht genau warum, da die Aufgabe ja vorschreibt wie die <em>multiplizieren2</em>-Funktion auszusehen hat. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Crisis10 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">b3 = b1.multiplizieren2(b2);
</code></pre>
</blockquote>
<p>Denk dran das man statische Funktion auch direkt per Klassenname gefolgt vom Gültigkeitsoperator aufrufen kann.</p>
<pre><code class="language-cpp">Bruch::multiplizieren2(b1, b2);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1701570</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701570</guid><dc:creator><![CDATA[Mizar]]></dc:creator><pubDate>Sun, 26 Apr 2009 16:35:46 GMT</pubDate></item><item><title><![CDATA[Reply to Objektübergabe-Problem on Mon, 27 Apr 2009 18:53:33 GMT]]></title><description><![CDATA[<p>ok danke danke hab das echt nicht richtig gelsen peinlich peinlich ^^</p>
<p>soo jetz hab ich niochne frage nebenbei ,.,, wenn ich diese funktionen mehrmals aufrufe werden dauerdn ja die werte in zaehler und nenner reingeschrieben. gibt es einen aufruf irdgbnwie das diese werte wieder auf die standardwerte gesetzt werden können?<br />
also so wie bei der deklaration:<br />
Bruch b1(4,12);<br />
Bruch b2(4,3);<br />
Bruch b3;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702231</guid><dc:creator><![CDATA[Crisis10]]></dc:creator><pubDate>Mon, 27 Apr 2009 18:53:33 GMT</pubDate></item></channel></rss>