<?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[Klassen]]></title><description><![CDATA[<p>Ich soll folgende Aufgabe erledigen:</p>
<p>**<br />
Eine Klasse definieren, die das Abspeichern, skalare Multiplizieren und Addieren von Polynomes eines (nahezu) beliebigen Grades ermöglicht, mit dynamischer Speicherverwaltung (d.h. Konstruktor, Destruktor + Funktionen). Die Koeffizienten sind vom Typ double.<br />
**</p>
<p>Dabei bin ich im Code steckengeblieben, ich weiss nicht wie ich weiterkommen kann:</p>
<pre><code>class Polynom {

private:
	double *pol1;
	double *pol2;
	double size1;
	double size2;

public:

	Polynom(double, double );
	~Polynom();

};

Polynom::Polynom(double grad1, double grad2)
{
	pol1 = new double;
	pol2 = new double;
	*pol1=grad1;
	*pol2=grad2;

}
Polynom::~Polynom()
{
	delete pol1;
	delete pol2;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/306131/klassen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 07 Aug 2026 16:40:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/306131.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Jul 2012 22:13:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassen on Wed, 18 Jul 2012 22:20:02 GMT]]></title><description><![CDATA[<p>Ich soll folgende Aufgabe erledigen:</p>
<p>**<br />
Eine Klasse definieren, die das Abspeichern, skalare Multiplizieren und Addieren von Polynomes eines (nahezu) beliebigen Grades ermöglicht, mit dynamischer Speicherverwaltung (d.h. Konstruktor, Destruktor + Funktionen). Die Koeffizienten sind vom Typ double.<br />
**</p>
<p>Dabei bin ich im Code steckengeblieben, ich weiss nicht wie ich weiterkommen kann:</p>
<pre><code>class Polynom {

private:
	double *pol1;
	double *pol2;
	double size1;
	double size2;

public:

	Polynom(double, double );
	~Polynom();

};

Polynom::Polynom(double grad1, double grad2)
{
	pol1 = new double;
	pol2 = new double;
	*pol1=grad1;
	*pol2=grad2;

}
Polynom::~Polynom()
{
	delete pol1;
	delete pol2;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2233936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233936</guid><dc:creator><![CDATA[JohnLH]]></dc:creator><pubDate>Wed, 18 Jul 2012 22:20:02 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen on Wed, 18 Jul 2012 22:34:00 GMT]]></title><description><![CDATA[<p>1. Designfragen klären: Wie kann man ein Polynom darstellen? Wie läuft die Rechnung mit Polynomen? Welche Informationen müssen wann wie verfügbar sein?<br />
2. Technische Fragen: Wie kann man diese Informationen speichern, so dass die Anforderungen von 1. erfüllt sind? Wie definiert man am besten die Rechnungen?</p>
<p>Dynamische Speicherverwaltung ist sicherlich nötig, um die Anforderungen aus 1 (Polynome beliebigen Grades) zu erfüllen. Die technische Umsetzung davon ist in C++ aber sicherlich nicht über new, delete und Pointer (zumindest wenn man irgendwann auch mal fertig werden möchte und es auch funktionieren soll), sondern über die Containerklassen (vector bietet sich hier an). Dann brauchst du auch den Destruktor nicht, der Konstruktor wird wesentlich einfacher und die Funktionen die du hier fälschlicherweise weggelassen hast (Regel der großen Drei) brauchst du auch gar nicht erst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233939</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 18 Jul 2012 22:34:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen on Wed, 18 Jul 2012 23:17:35 GMT]]></title><description><![CDATA[<p>Mein Vorschlag: Eine Datenstruktur für einen Grad erstellen:</p>
<pre><code class="language-cpp">struct Level
{
        typedef double coefficient_t;

        coefficient_t coefficient;
        size_t exponent;

        Level(coefficient_t ld = 0, size_t s = 0): //default: Summe, 0
        coefficient(ld), exponent(s) {}

        long double operator()(long double x)
        {
            return coefficient * std::pow(x, exponent);
        }
};

bool operator&lt;(Level const&amp; a, Level const&amp; b)
{
        return a.exponent &lt; b.exponent;
}
bool operator==(Level const&amp; a, Level const&amp; b)
{
        return a.exponent == b.exponent;
}
</code></pre>
<p>Dann eine Polynomklasse:</p>
<pre><code class="language-cpp">#include &lt;map&gt;

class Polynom
{
    std::map&lt;size_t, Level&gt; mLevels;//Redundanz-Pegel: 4/10 :D
    size_t const mNLevel;

public:

        template&lt;typename it_t&gt;
        Polynom(it_t a, it_t b):
        mLevels(a, b),
        mNLevel(mLevels.size()) {}

        long double operator()(long double X)
        {
                long double sum(0);
                for(size_t a(0) ; a &lt; mLevels.size(); ++a) //Range-Based for in C++11 - bin zu faul zum iterieren :p
                        sum += mLevels[a](X);

                return sum;
        }
};
</code></pre>
<p>Sourceforge: <a href="http://ideone.com/hFp6h" rel="nofollow">http://ideone.com/hFp6h</a></p>
<p>Jetzt kann man diskutieren, ob man nicht doch lieber einen <code>std::vector</code> nimmt (Performance), oder ob meine Lösung Scheiße ist..</p>
<p>Edit: Folgende Methode kann noch zum skalaren Multiplizieren verwendet werden, vorrausgesetzt ich habe verstanden was es ist:</p>
<pre><code class="language-cpp">void multiplyEach(Level::coefficient_t scalar)
        {
                for(size_t a(0) ; a &lt; mLevels.size(); ++a) //Range-Based for in C++11 - bin zu faul zum iterieren :p
                        mLevels[a].coefficient *= scalar;
        }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2233949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233949</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 18 Jul 2012 23:17:35 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen on Thu, 19 Jul 2012 05:16:40 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Mein Vorschlag: Eine Datenstruktur für einen Grad erstellen:</p>
</blockquote>
<p>Wofür? Code-Bloat pur.</p>
<p>Auch in diesem Thread gilt: Bitte poste wenigstens richtigen Code. Du übergibst der Level-Struktur nicht den Exponenten, den du sowieso schon in der Polynom-Klasse speicherst. So funktioniert dein Code nur für x = 1.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233960</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Thu, 19 Jul 2012 05:16:40 GMT</pubDate></item></channel></rss>