<?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[C++ rechnen mit rationalen Zahlen]]></title><description><![CDATA[<p>hallo Leute,<br />
ich hab ne Programm, das mit rationalen Zahlenrechnet.<br />
meine header datei lautet</p>
<pre><code class="language-cpp">// ratio.h
// Klasse für rationale Zahlen
#ifndef ratio_h
#define ratio_h

class rational
{
      public:
             rational()
             : zaehler(1), nenner(1)
             {}                     //inline
             rational(long);        //Typumwandlungskonstroktor

             // Abfrage inline
             long Zaehler () const {return zaehler;}
             long Nenner () const {return nenner;}

            void add(rational a, rational b);
            void sub(rational a, rational b);
            void mult(rational a, rational b);
            void div(rational z, rational n);

            void definiere(long zaehler, long nenner);
            void eingabe();
            void ausgabe() const;
            void kehrwert();
            void kuerzen();

      private:
        long zaehler, nenner;
    };
    #endif
</code></pre>
<p>Bibliothek:</p>
<pre><code class="language-cpp">/ ratio.cpp 
#include&quot;ratio.h&quot;
#include&lt;iostream&gt;
#include&lt;assert.h&gt;

rational::rational(long ganz)       // Typumwandlungskonstrukstor
{
    zaehler = ganz;
    nenner = 1;
                        }

void rational::add(rational a, rational b)
{
     zaehler = a,zaehler*b.nenner + b.zaehler*a.nenner;
     nenner  = a.nenner*b.nenner;
     kuerzen();
     }
:
 ...
....

void rational::eingabe()
{
     /* cerr wird gewaehlt, damit die Abfragen auch dann auf dem Bildschirm erscheinen,
      wenn die Standardausgabe in eine Datei zur Dokumentation geleitet wird.*/
 std::cerr &lt;&lt;&quot;Geben Sie den Zaehler ein :&quot;;
 std::cin &gt;&gt; zaehler;
 std::cerr &lt;&lt;&quot;Geben Sie den Nenner ein :&quot;;
 std::cin &gt;&gt; nenner;
 assert(nenner!=0);
}

void rational::ausgabe() const
{
     std::cout &lt;&lt; zaehler &lt;&lt; &quot;/&quot; &lt;&lt; nenner &lt;&lt; std::endl;
}

void rational::kehrwert()
{
     long temp = zaehler;
     zaehler = nenner;
     nenner = temp;
     assert(nenner !=0);
}

long ggt(long x, long y)
{
     long teiler, zaehler, nenner;
     int sign = 1;
     if (zaehler &lt; 0) { sign = -sign; zaehler = -zaehler;}
     if (nenner   &lt;0) { sign = -sign; nenner = - nenner;}
     long reiler=ggt(zaehler,nenner);
     zaehler = sign*zaehler/teiler;
     nenner = nenner/teiler;
}
</code></pre>
<p>und mein programm mit funktionen lautet:</p>
<pre><code class="language-cpp">#include&quot;ratio.h&quot;
#include&lt;iostream&gt;

// alle 4 Operationen fuer a und b
void druckeTestfall(rational a, rational b)
{
     rational erg;
     std::cout &lt;&lt; &quot;a = &quot; ; a.ausgabe();
     std::cout &lt;&lt; &quot;b = &quot;; b.ausgabe();
     erg.add(a,b);
     std::cout &lt;&lt; &quot;+  : &quot;; erg.ausgabe();
     erg.sub(a,b);
     std::cout &lt;&lt; &quot;-  : &quot;; erg.ausgabe();
     erg.mult(a,b);
     std::cout &lt;&lt; &quot;*  : &quot;; erg.ausgabe();
     erg.div(a,b);
     std::cout &lt;&lt; &quot;/  : &quot;; erg.ausgabe();
     std::cout&lt;&lt;std::endl;
}

int main()
{
    rational a,b;
    std::cout &lt;&lt; &quot;Test der Eingabe\n&quot;;
    std::cout &lt;&lt; &quot;a:\n&quot;; a.eingabe();
    std::cout &lt;&lt; &quot;b:\n&quot;; b.eingabe();
    druckeTestfall(a,b);

    std::cout &lt;&lt;&quot;\n Test mit verschiedenen Vorzeichen\n&quot;;
    a.definiere(3,7);    b.definiere(6,13);
    druckeTestfall(a,b);
    a.definiere(3,-7);
    druckeTestfall(a,b);

    //....

    std::cout &lt;&lt;&quot;Test mit Nullwerten\n&quot;;
    a.definiere(0,7);   b.definiere(6,13);
    druckeTestfall(a,b);
    a.definiere(3,0);
    druckeTestfall(a,b);

    //...

    std::cout &lt;&lt;&quot;\n Test mit gemischten Datentypen\n&quot;;
    a.definiere(2301,77777);
    druckeTestfall(a,17);
    druckeTestfall(17,a);

    //...
}
</code></pre>
<p>kann jemand bitte mir helfen das Programm zu beenden, denn ich bekomme fehlermeldungen beim compilieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/258290/c-rechnen-mit-rationalen-zahlen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 10:00:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/258290.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 08 Jan 2010 19:18:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Fri, 08 Jan 2010 19:18:43 GMT]]></title><description><![CDATA[<p>hallo Leute,<br />
ich hab ne Programm, das mit rationalen Zahlenrechnet.<br />
meine header datei lautet</p>
<pre><code class="language-cpp">// ratio.h
// Klasse für rationale Zahlen
#ifndef ratio_h
#define ratio_h

class rational
{
      public:
             rational()
             : zaehler(1), nenner(1)
             {}                     //inline
             rational(long);        //Typumwandlungskonstroktor

             // Abfrage inline
             long Zaehler () const {return zaehler;}
             long Nenner () const {return nenner;}

            void add(rational a, rational b);
            void sub(rational a, rational b);
            void mult(rational a, rational b);
            void div(rational z, rational n);

            void definiere(long zaehler, long nenner);
            void eingabe();
            void ausgabe() const;
            void kehrwert();
            void kuerzen();

      private:
        long zaehler, nenner;
    };
    #endif
</code></pre>
<p>Bibliothek:</p>
<pre><code class="language-cpp">/ ratio.cpp 
#include&quot;ratio.h&quot;
#include&lt;iostream&gt;
#include&lt;assert.h&gt;

rational::rational(long ganz)       // Typumwandlungskonstrukstor
{
    zaehler = ganz;
    nenner = 1;
                        }

void rational::add(rational a, rational b)
{
     zaehler = a,zaehler*b.nenner + b.zaehler*a.nenner;
     nenner  = a.nenner*b.nenner;
     kuerzen();
     }
:
 ...
....

void rational::eingabe()
{
     /* cerr wird gewaehlt, damit die Abfragen auch dann auf dem Bildschirm erscheinen,
      wenn die Standardausgabe in eine Datei zur Dokumentation geleitet wird.*/
 std::cerr &lt;&lt;&quot;Geben Sie den Zaehler ein :&quot;;
 std::cin &gt;&gt; zaehler;
 std::cerr &lt;&lt;&quot;Geben Sie den Nenner ein :&quot;;
 std::cin &gt;&gt; nenner;
 assert(nenner!=0);
}

void rational::ausgabe() const
{
     std::cout &lt;&lt; zaehler &lt;&lt; &quot;/&quot; &lt;&lt; nenner &lt;&lt; std::endl;
}

void rational::kehrwert()
{
     long temp = zaehler;
     zaehler = nenner;
     nenner = temp;
     assert(nenner !=0);
}

long ggt(long x, long y)
{
     long teiler, zaehler, nenner;
     int sign = 1;
     if (zaehler &lt; 0) { sign = -sign; zaehler = -zaehler;}
     if (nenner   &lt;0) { sign = -sign; nenner = - nenner;}
     long reiler=ggt(zaehler,nenner);
     zaehler = sign*zaehler/teiler;
     nenner = nenner/teiler;
}
</code></pre>
<p>und mein programm mit funktionen lautet:</p>
<pre><code class="language-cpp">#include&quot;ratio.h&quot;
#include&lt;iostream&gt;

// alle 4 Operationen fuer a und b
void druckeTestfall(rational a, rational b)
{
     rational erg;
     std::cout &lt;&lt; &quot;a = &quot; ; a.ausgabe();
     std::cout &lt;&lt; &quot;b = &quot;; b.ausgabe();
     erg.add(a,b);
     std::cout &lt;&lt; &quot;+  : &quot;; erg.ausgabe();
     erg.sub(a,b);
     std::cout &lt;&lt; &quot;-  : &quot;; erg.ausgabe();
     erg.mult(a,b);
     std::cout &lt;&lt; &quot;*  : &quot;; erg.ausgabe();
     erg.div(a,b);
     std::cout &lt;&lt; &quot;/  : &quot;; erg.ausgabe();
     std::cout&lt;&lt;std::endl;
}

int main()
{
    rational a,b;
    std::cout &lt;&lt; &quot;Test der Eingabe\n&quot;;
    std::cout &lt;&lt; &quot;a:\n&quot;; a.eingabe();
    std::cout &lt;&lt; &quot;b:\n&quot;; b.eingabe();
    druckeTestfall(a,b);

    std::cout &lt;&lt;&quot;\n Test mit verschiedenen Vorzeichen\n&quot;;
    a.definiere(3,7);    b.definiere(6,13);
    druckeTestfall(a,b);
    a.definiere(3,-7);
    druckeTestfall(a,b);

    //....

    std::cout &lt;&lt;&quot;Test mit Nullwerten\n&quot;;
    a.definiere(0,7);   b.definiere(6,13);
    druckeTestfall(a,b);
    a.definiere(3,0);
    druckeTestfall(a,b);

    //...

    std::cout &lt;&lt;&quot;\n Test mit gemischten Datentypen\n&quot;;
    a.definiere(2301,77777);
    druckeTestfall(a,17);
    druckeTestfall(17,a);

    //...
}
</code></pre>
<p>kann jemand bitte mir helfen das Programm zu beenden, denn ich bekomme fehlermeldungen beim compilieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835242</guid><dc:creator><![CDATA[expert]]></dc:creator><pubDate>Fri, 08 Jan 2010 19:18:43 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Fri, 08 Jan 2010 19:22:03 GMT]]></title><description><![CDATA[<blockquote>
<p>&gt; kann jemand bitte mir helfen das Programm zu beenden,</p>
</blockquote>
<p>Bei entsprechender Eigeninitiative gerne. :xmas1:</p>
<blockquote>
<p>&gt; denn ich bekomme fehlermeldungen beim compilieren.</p>
</blockquote>
<p>Wie nett, dass du uns diese auch zeigst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835246</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Fri, 08 Jan 2010 19:22:03 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Fri, 08 Jan 2010 19:25:34 GMT]]></title><description><![CDATA[<p>Nachtrag:<br />
Das letzte Code-stück ist nicht so wichtig. Und das zwite ist natürlich auch nicht die Bibliothek.</p>
<p>Das Problem besteht unter anderem darin, dass der Compiler in ratio.cpp meint, dass zaehler, nenner und teiler nich deklariert wurde. Aber das habe ich doch in der header-datei gemacht, oder?<br />
Und dann meint der Compiler das er am anfang von ratio.cpp nicht von rational auf long springen kann.</p>
<p>Ich hoffe auf eure Hilfe.</p>
<p>MfG</p>
<p>expert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835252</guid><dc:creator><![CDATA[expert]]></dc:creator><pubDate>Fri, 08 Jan 2010 19:25:34 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Fri, 08 Jan 2010 19:25:36 GMT]]></title><description><![CDATA[<p>In deinem Code sind lauter &quot;....&quot;. Das funktioniert natürlich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835253</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 08 Jan 2010 19:25:36 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Fri, 08 Jan 2010 19:26:47 GMT]]></title><description><![CDATA[<p>Die ... sind nur um zu zeigen dass ich da was weggelassen habe vor dem posten... die hab ich natürlich nicht im Programmm.^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835256</guid><dc:creator><![CDATA[expert]]></dc:creator><pubDate>Fri, 08 Jan 2010 19:26:47 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Fri, 08 Jan 2010 19:33:50 GMT]]></title><description><![CDATA[<p>Toll. Wieso schreibst du nicht endlich die Fehlermeldung? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835264</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Fri, 08 Jan 2010 19:33:50 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Fri, 08 Jan 2010 19:37:14 GMT]]></title><description><![CDATA[<blockquote>
<p>Das Problem besteht unter anderem darin, dass der Compiler in ratio.cpp meint, dass zaehler, nenner und teiler nich deklariert wurde. Aber das habe ich doch in der header-datei gemacht, oder?<br />
Und dann meint der Compiler das er am anfang von ratio.cpp nicht von rational auf long springen kann.</p>
</blockquote>
<p>ich habe oben doch beschrieben....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835270</guid><dc:creator><![CDATA[expert]]></dc:creator><pubDate>Fri, 08 Jan 2010 19:37:14 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Fri, 08 Jan 2010 19:41:34 GMT]]></title><description><![CDATA[<p>Hab ich doch, oder? Dritter Beitrag. Naja etwas genauer:</p>
<p>In member function <code>void rational::add(rational, rational)': cannot convert \</code>rational' to `long int' in assignment</p>
<p>In function `long int ggt(long int, long int)': `zaehler' undeclared (first use this function)</p>
<p>`nenner' undeclared (first use this function)</p>
<p>`teiler' undeclared (first use this function)</p>
<p>und mir ist noch aufgefallen:<br />
[Build Error] [ratio.o] Error 1</p>
<p>Hoffe das ist ok.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835276</guid><dc:creator><![CDATA[expert]]></dc:creator><pubDate>Fri, 08 Jan 2010 19:41:34 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Fri, 08 Jan 2010 19:48:36 GMT]]></title><description><![CDATA[<p>expert schrieb:</p>
<blockquote>
<p>Naja etwas genauer:</p>
</blockquote>
<p>Was den Unterschied zwischen unbrauchbar und nützlich ausmacht. Interpretieren ist für Gedichte da, der Computer möchte es etwas präziser haben.</p>
<blockquote>
<p>In member function <code>void rational::add(rational, rational)': cannot convert \</code>rational' to `long int' in assignment</p>
</blockquote>
<p>Schreibfehler: Komma statt Punkt geschrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835281</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 08 Jan 2010 19:48:36 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Fri, 08 Jan 2010 19:52:54 GMT]]></title><description><![CDATA[<p>Nein, wie blöd... danke wegen des Punkts^^.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835284</guid><dc:creator><![CDATA[expert]]></dc:creator><pubDate>Fri, 08 Jan 2010 19:52:54 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Fri, 08 Jan 2010 20:22:53 GMT]]></title><description><![CDATA[<p>Hat denn einer ne Idee woher die anderen Probleme kommen könnten, oder besser wie sie beseitigt werden können?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835297</guid><dc:creator><![CDATA[expert]]></dc:creator><pubDate>Fri, 08 Jan 2010 20:22:53 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Fri, 08 Jan 2010 20:38:56 GMT]]></title><description><![CDATA[<p>Ja. Aber warum versuchst du nicht wenigstens, aus den Fehlermeldungen schlau zu werden? Genauer als &quot;... undeclared&quot; kann man nicht deklarierte Variablen ja wirklich nicht mehr beschreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835307</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 08 Jan 2010 20:38:56 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Fri, 08 Jan 2010 21:30:47 GMT]]></title><description><![CDATA[<p>ggt ist bei dir keine Memberfunktion von rational und kennt daher auch nicht dessen Membervariablen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835337</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 08 Jan 2010 21:30:47 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Sat, 09 Jan 2010 15:45:56 GMT]]></title><description><![CDATA[<p>Vielen Danke, Leute!<br />
Habt mir sehr geholfen!</p>
<p>MfG</p>
<p>expert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835633</guid><dc:creator><![CDATA[expert]]></dc:creator><pubDate>Sat, 09 Jan 2010 15:45:56 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Sat, 09 Jan 2010 17:21:24 GMT]]></title><description><![CDATA[<p>Hallo,<br />
bin auf ein neues Problem gestossen.<br />
Und zwar soll ich die den Additionsoperator und natürlich die anderen arithmetischen Operatoren (von denen hab ich den Code nicht gepostet) überladen.<br />
Kann mir jemand von euch anhand des Additionsoperators zeigen, wie das gehen könnte und wie ich das entsprechend einbaue.</p>
<p>Habe schon folgenden Ansatz:</p>
<pre><code class="language-cpp">rational operator+(rational a, rational b)
{
         rational t;
         t.zaehler = a.zaehler*b.nenner + b.zaehler*a.nenner;
         t.nenner  = a.nenner*b.nenner;
         t.kuerzen();
         return t;
}

rational operator+(rational a, rational b)
{
         return b+a;
}
</code></pre>
<p>Jedoch komm ich da nicht weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835719</guid><dc:creator><![CDATA[expert]]></dc:creator><pubDate>Sat, 09 Jan 2010 17:21:24 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Sat, 09 Jan 2010 17:39:26 GMT]]></title><description><![CDATA[<p>Was soll der zweite operator bezwecken und was soll &quot;ich komme nicht weiter&quot; heißen? Ist es so schwer eine Frage vernünftig zu stellen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835744</guid><dc:creator><![CDATA[Walli]]></dc:creator><pubDate>Sat, 09 Jan 2010 17:39:26 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Sat, 09 Jan 2010 17:40:23 GMT]]></title><description><![CDATA[<p>Was heißt nicht weiterkommen? So wie ich das sehe bist du schon fertig:</p>
<pre><code class="language-cpp">rational operator+(rational a, rational b)
{
         rational t;
         t.zaehler = a.zaehler*b.nenner + b.zaehler*a.nenner;
         t.nenner  = a.nenner*b.nenner;
         t.kuerzen();
         return t;
}
</code></pre>
<p>(Wobei man noch erwähnen sollte, dass man den + Operator meistens vom += Operator ableitet, aber das ist eine andere Geschichte)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835749</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 09 Jan 2010 17:40:23 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Sat, 09 Jan 2010 17:51:00 GMT]]></title><description><![CDATA[<p>Wie genau bekomme ich das denn nun angewendet? Mein Zaehler und mein Nenner sind ja privat. Und wenn das gelöst is reicht es dann, wenn ich einfach wieder mein Testprogramm benutze?</p>
<p>ratio.h: In function `rational operator+(rational, rational)':</p>
<p>ratio.h:30: error: <code>long int rational::zaehler' is private ratio.cpp:92: error: within this context ratio.h:30: error:</code>long int rational::zaehler' is private<br />
ratio.cpp:92: error: within this context<br />
ratio.h:30: error: <code>long int rational::nenner' is private ratio.cpp:92: error: within this context ratio.h:30: error:</code>long int rational::zaehler' is private<br />
ratio.cpp:92: error: within this context<br />
ratio.h:30: error: <code>long int rational::nenner' is private ratio.cpp:92: error: within this context ratio.h:30: error:</code>long int rational::nenner' is private<br />
ratio.cpp:93: error: within this context<br />
ratio.h:30: error: <code>long int rational::nenner' is private ratio.cpp:93: error: within this context ratio.h:30: error:</code>long int rational::nenner' is private<br />
ratio.cpp:93: error: within this context</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835770</guid><dc:creator><![CDATA[expert]]></dc:creator><pubDate>Sat, 09 Jan 2010 17:51:00 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Sat, 09 Jan 2010 17:53:03 GMT]]></title><description><![CDATA[<p>Mach den Operator zum friend!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835772</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 09 Jan 2010 17:53:03 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Sat, 09 Jan 2010 17:59:55 GMT]]></title><description><![CDATA[<p>Achso... ich dachte ich bräuchte das nur, wenn ich keinen Typumwandlungskonstruktor habe.<br />
Müsste dann so aussehen:</p>
<pre><code class="language-cpp">friend rational operator+(long, rational);
friend rational operator+(rational, long);
</code></pre>
<p>,oder?</p>
<p>Das setz ich dann direkt über die rational operator?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835783</guid><dc:creator><![CDATA[expert]]></dc:creator><pubDate>Sat, 09 Jan 2010 17:59:55 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Sat, 09 Jan 2010 18:50:52 GMT]]></title><description><![CDATA[<p>expert schrieb:</p>
<blockquote>
<p>Achso... ich dachte ich bräuchte das nur, wenn ich keinen Typumwandlungskonstruktor habe.<br />
Müsste dann so aussehen:</p>
<pre><code class="language-cpp">friend rational operator+(long, rational);
friend rational operator+(rational, long);
</code></pre>
<p>,oder?</p>
</blockquote>
<p>Der Operator in deinem Beispiel hat aber die Singatur</p>
<pre><code class="language-cpp">rational operator+(rational, rational);
</code></pre>
<blockquote>
<p>Das setz ich dann direkt über die rational operator?</p>
</blockquote>
<p>Nein, friend Deklarationen gehören in die Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835844</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 09 Jan 2010 18:50:52 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Sat, 09 Jan 2010 20:47:51 GMT]]></title><description><![CDATA[<p>Vielen Dank für deine Hilfe Sepp!<br />
Steh aber irgendwie auf dem Schlauch. Ich brauch doch das noch hier:</p>
<pre><code class="language-cpp">rational operator+(rational a, rational b)
{
         return b+a;
}
</code></pre>
<p>,oder?</p>
<p>Und wie kann ich das schließlich angezeigt bekommen? Hab das sonst bei der Addition, z.B. mit erg.add(a,b);<br />
gemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835945</guid><dc:creator><![CDATA[expert]]></dc:creator><pubDate>Sat, 09 Jan 2010 20:47:51 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Sat, 09 Jan 2010 20:50:13 GMT]]></title><description><![CDATA[<p>Nachtrag:<br />
Und wenn ich das einbaue was ich eben gepostet habe bekomme ich vom Compiler:</p>
<p>ratio.cpp: In function <code>rational operator+(rational, rational)': ratio.cpp:100: error: redefinition of</code>rational operator+(rational, rational)'<br />
ratio.cpp:91: error: `rational operator+(rational, rational)' previously defined here</p>
<p>Wie umgehe ich diese Redefinition?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835948</guid><dc:creator><![CDATA[expert]]></dc:creator><pubDate>Sat, 09 Jan 2010 20:50:13 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Sat, 09 Jan 2010 21:01:47 GMT]]></title><description><![CDATA[<p>expert schrieb:</p>
<blockquote>
<p>Wie umgehe ich diese Redefinition?</p>
</blockquote>
<p>Indem du die Funktion (hier deinen <code>operator+</code> ) nur ein einziges Mal definierst. Allerdings gibt es bezüglich Operatorüberladung einige Dinge, die du besser machen könntest (z.B. <code>operator+=</code> in Klasse und <code>operator+</code> mit dessen Hilfe implementieren, Const-Referenz-Parameter), siehe dazu <a href="http://magazin.c-plusplus.net/artikel/%DCberladung%20von%20Operatoren%20in%20CPlusPlus%20%28Teil%201%29" rel="nofollow">hier</a>.</p>
<p>Übrigens:</p>
<pre><code class="language-cpp">rational operator+(rational a, rational b)
{
         return b+a;
}
</code></pre>
<p>wird zu einer Endlosrekursion und somit zu einem Stackoverflow führen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835952</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 09 Jan 2010 21:01:47 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Sat, 09 Jan 2010 23:11:50 GMT]]></title><description><![CDATA[<p>Sry Leute wenn ich euch nerve, aber ich komme echt nicht weiter.<br />
Hab</p>
<pre><code class="language-cpp">friend rational operator+(rational, rational);
</code></pre>
<p>in der Header Datei.<br />
Hab mir den Link von Nexus auch angesehen, aber ich werd nich richtig raus schlau...<br />
Muss dazu sagen, dass ich in C++ noch wenig bis keine Erfahrung habe. Könnte mir vielleicht einer das Beispiel für die Addition geben?<br />
Kann man das denn nicht zusammenfügen? Und dann a und b über cout ausgeben?</p>
<pre><code class="language-cpp">rational operator+(rational a, rational b)
{
         rational t;
         t.zaehler = a.zaehler*b.nenner + b.zaehler*a.nenner;
         t.nenner  = a.nenner*b.nenner;
         t.kuerzen();
         return t;
}

rational operator+(rational a, rational b)
{
         return b+a;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1835999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835999</guid><dc:creator><![CDATA[expert]]></dc:creator><pubDate>Sat, 09 Jan 2010 23:11:50 GMT</pubDate></item><item><title><![CDATA[Reply to C++ rechnen mit rationalen Zahlen on Sun, 10 Jan 2010 01:14:53 GMT]]></title><description><![CDATA[<p>Was soll denn immer diese zweite Definition?</p>
<pre><code class="language-cpp">rational operator+(rational a, rational b)
{
         return b+a;
}
</code></pre>
<p>Du hast doch einen schönen Operator + direkt darüber, was soll dieser noch? (abgesehen davon, dass dieser, wie schon oben, erwähnt eine Endlosrekursion ist)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1836019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1836019</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 10 Jan 2010 01:14:53 GMT</pubDate></item></channel></rss>