<?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[Klasse für Nullstellenfindung]]></title><description><![CDATA[<p>Hallo liebe Community. Ich habe gerade erst mit dem Programmieren angefangen und bin mir noch ziemlich unsicher mit meiner ersten Klassen-Programmierung. Ist jemand so freundlich mir zu sagen, ob mein derzeitiger Code folgender Aufgabenstellung entspricht?</p>
<p>*Die Klasse Nullstelle soll einen Zeiger auf eine Funktion f, zwei Variablen vom Typ double für die Intervallränder a und b eines abgeschlossenen Intervalls [a,b] in dem nach einer Nullstelle von f gesucht wird, sowie eine Genauigkeitsschranke i_max und eine maximale Anzahl von Iterationen imax für die<br />
Nullstellensuche als Membervariablen haben.</p>
<p>Man implementiere den Konstruktor sowie geeignete set- und get-Methoden zur Erzeugung und Initialisierung von Objekten der Klasse sowie zum Zugriff auf deren Membervariablen.*</p>
<p>Im Anschluss mein Versuch der Aufgabe gemäß meine Klasse zu erstellen:</p>
<pre><code>#ifndef _NULLSTELLE_H
#define _NULLSTELLE_H
class Nullstelle {

	private:
	double *Zeiger (double);                    //Zeiger auf Funktion f; f liegt in [a,b] und ist daher von Typ double und gibt ein (double) Ergebnis.
    double Untergrenze, Obergrenze;             //Intervallränder eines abgeschlossenen Intervalls [a,b]
    double epsilon;                             //Genauigkeitsschranke epsilon
    int i_max;                                  //maximale Anzahl Iterationen i_max für Nullstellensuche

    public:
    Nullstelle(double, int);	                //Deklaration des Konstruktors
    Nullstelle(double);
    Nullstelle(int);
    Nullstelle();

    void set_Zeiger(double *Zeiger (double));   //geeignete Set- und Get- Methoden
    double get_Zeiger();
    void set_Untergrenze(double a);
    double get_Untergrenze();
    void set_Obergrenze(double b);
    double get_Obergrenze();
	void set_epsilon(double epsilon);  
    double get_epsilon();
	void set_i_max(int i_max);
    int get_i_max();

};

#endif
</code></pre>
<p>Kritik und Hinweise darauf, was ich hätte besser machen können, sind natürlich gerne willkommen <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/topic/334330/klasse-für-nullstellenfindung</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 17:53:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/334330.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Sep 2015 22:48:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasse für Nullstellenfindung on Sun, 06 Sep 2015 22:48:44 GMT]]></title><description><![CDATA[<p>Hallo liebe Community. Ich habe gerade erst mit dem Programmieren angefangen und bin mir noch ziemlich unsicher mit meiner ersten Klassen-Programmierung. Ist jemand so freundlich mir zu sagen, ob mein derzeitiger Code folgender Aufgabenstellung entspricht?</p>
<p>*Die Klasse Nullstelle soll einen Zeiger auf eine Funktion f, zwei Variablen vom Typ double für die Intervallränder a und b eines abgeschlossenen Intervalls [a,b] in dem nach einer Nullstelle von f gesucht wird, sowie eine Genauigkeitsschranke i_max und eine maximale Anzahl von Iterationen imax für die<br />
Nullstellensuche als Membervariablen haben.</p>
<p>Man implementiere den Konstruktor sowie geeignete set- und get-Methoden zur Erzeugung und Initialisierung von Objekten der Klasse sowie zum Zugriff auf deren Membervariablen.*</p>
<p>Im Anschluss mein Versuch der Aufgabe gemäß meine Klasse zu erstellen:</p>
<pre><code>#ifndef _NULLSTELLE_H
#define _NULLSTELLE_H
class Nullstelle {

	private:
	double *Zeiger (double);                    //Zeiger auf Funktion f; f liegt in [a,b] und ist daher von Typ double und gibt ein (double) Ergebnis.
    double Untergrenze, Obergrenze;             //Intervallränder eines abgeschlossenen Intervalls [a,b]
    double epsilon;                             //Genauigkeitsschranke epsilon
    int i_max;                                  //maximale Anzahl Iterationen i_max für Nullstellensuche

    public:
    Nullstelle(double, int);	                //Deklaration des Konstruktors
    Nullstelle(double);
    Nullstelle(int);
    Nullstelle();

    void set_Zeiger(double *Zeiger (double));   //geeignete Set- und Get- Methoden
    double get_Zeiger();
    void set_Untergrenze(double a);
    double get_Untergrenze();
    void set_Obergrenze(double b);
    double get_Obergrenze();
	void set_epsilon(double epsilon);  
    double get_epsilon();
	void set_i_max(int i_max);
    int get_i_max();

};

#endif
</code></pre>
<p>Kritik und Hinweise darauf, was ich hätte besser machen können, sind natürlich gerne willkommen <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/2467017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467017</guid><dc:creator><![CDATA[Mikomi]]></dc:creator><pubDate>Sun, 06 Sep 2015 22:48:44 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse für Nullstellenfindung on Sun, 06 Sep 2015 23:05:17 GMT]]></title><description><![CDATA[<blockquote>
<p>sowie eine Genauigkeitsschranke i_max</p>
</blockquote>
<p>Ich vermute, dies ist ein Schreibfehler und es soll epsilon heißen, oder?</p>
<p>Zum Code:<br />
Bezeichner mit einem Unterstrich am Anfang gefolgt von einem Großbuchstaben sind überall reserviert und sollten nicht benutzt werden. Ebenso sind alle Bezeichner, die überhaupt mit einem Unterstrich losgehen, im globalen Namensraum reserviert.</p>
<p>Was sollen die ganzen verschiedenen Konstruktoren? So ist das bestimmt nicht gemeint. Das macht auch keinen erkennbaren Sinn.</p>
<p>Du solltest const-Correctness beachten.</p>
<p>Die verlangte Implementierung fehlt noch.</p>
<p>Warum eine Nullstellensuche überhaupt eine Klasse sein sollte, kann dir wohl nur dein Lehrer erklären. Oder auch nicht. Denn es sollte keine Klasse sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2467018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467018</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 06 Sep 2015 23:05:17 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse für Nullstellenfindung on Sun, 06 Sep 2015 23:33:27 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<blockquote>
<p>sowie eine Genauigkeitsschranke i_max</p>
</blockquote>
<p>Ich vermute, dies ist ein Schreibfehler und es soll epsilon heißen, oder?</p>
</blockquote>
<p>Ja, das sollte ein Epsilon sein, sorry^^'</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Zum Code:<br />
Bezeichner mit einem Unterstrich am Anfang gefolgt von einem Großbuchstaben sind überall reserviert und sollten nicht benutzt werden. Ebenso sind alle Bezeichner, die überhaupt mit einem Unterstrich losgehen, im globalen Namensraum reserviert.</p>
</blockquote>
<p>Welche Bezeichner meinst du damit? Falls du die set_Obergrenze etc. damit meinst, in meinem Buch stand, dass man seine private Membervariablen damit im public Bereich erst &quot;verfügbar&quot; macht, inklusive Unterstrich und ich hatte im Internet auch ein Beispiel mit dieser Schreibweise gesehen <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>SeppJ schrieb:</p>
<blockquote>
<p>Was sollen die ganzen verschiedenen Konstruktoren? So ist das bestimmt nicht gemeint. Das macht auch keinen erkennbaren Sinn.</p>
</blockquote>
<p>Auch das hab ich aus meinem Buch. Wie könnte man den Konstruktor denn besser formulieren?</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Du solltest const-Correctness beachten.</p>
</blockquote>
<p>Ah, das hatte ich ganz vergessen, komm mit dem const- Befehl noch etwas durcheinander.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Die verlangte Implementierung fehlt noch.</p>
</blockquote>
<p>Ich dachte mit Implementierung wäre die Einfügung in den public-Teil der Klasse gemeint. Anscheinend nicht, was dann? <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>SeppJ schrieb:</p>
<blockquote>
<p>Warum eine Nullstellensuche überhaupt eine Klasse sein sollte, kann dir wohl nur dein Lehrer erklären. Oder auch nicht. Denn es sollte keine Klasse sein.</p>
</blockquote>
<p>Die Klasse zu erstellen ist erst der Anfang meines Projekts. Im späteren Teil soll ich einmal mittels friend-Funktion und anhand eines Beispiels die Klasse testen, allerdings ist die Klasse richtig zu programmieren derzeit mein größtes Problem an dem Projekt :S</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2467019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467019</guid><dc:creator><![CDATA[Mikomi]]></dc:creator><pubDate>Sun, 06 Sep 2015 23:33:27 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse für Nullstellenfindung on Sun, 06 Sep 2015 23:39:23 GMT]]></title><description><![CDATA[<p>Sieht doch ganz gut aus. Etwas kritisch sehe ich die Implementierung deiner Konstruktoren. Objekte einer Klasse sollten nach ihrer Erzeugung (durch einen Konstruktor) keine unitialisierten Daten mehr enthalten:<br />
Trotz vier Konstruktoren gibst du dem Anwender der Klasse nicht einmal die Möglichkeit die Unter,- und Obergrenze zu initialisieren und zwingst damit den schreibfaulen Programmierer die entsprechende Get/- Set Methode explizit aufzurufen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> .</p>
<p>Kurz gesagt: Alle privaten Daten sind für die Funktionalität erforderlich und deshalb reicht ein Konstruktor.</p>
<pre><code>Nullstelle(((double *fp)(double)), double uGrenze, double oGrenze, double eps, int max);
</code></pre>
<p>Weiterhin hast du jetzt auch die Möglichkeit eine einzige Konstruktorinterne Liste (falls du schon weißt, was das ist) zu verwenden: Etwas effizienter.</p>
<p>Und weil du mich jetzt in den kritischen Modus gebracht hast, muss ich noch folgendes bemängeln:</p>
<pre><code>double *Zeiger (double); 
void set_Zeiger(double *Zeiger (double));   //geeignete Set- und Get- Methoden
double get_Zeiger();
</code></pre>
<p>Die Aufgabenstellung besagt ja bereits, dass es sich bei dem Funktionsverweis um die mathematische Funktion selbst handelt, in der basierend auf die vorhandene Unter,- und Obergrenze nach Nullstellen gesucht werden soll.</p>
<pre><code>double *NullstellenFunktion (double); // vorher: double* Zeiger(double)
void set_NullstellenFunktion(double *Zeiger (double)); // vorher: set_Zeiger
double get_Nullstellen() // Hier findet die Berechnung der Nullstellen von *NullstellenFunktion statt
</code></pre>
<p>Spätestens wenn du den tatsächlichen Code implementiert wirst du feststellen, dass der Rückgabetyp double nicht wirklich geeignet für get_Nullstellen() ist.<br />
... Ich hab jetzt irgendwie keine Lust mehr zu schreiben, schau dir dann einfach die C++-Vektor Klasse an <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2467020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467020</guid><dc:creator><![CDATA[Fernbedienung]]></dc:creator><pubDate>Sun, 06 Sep 2015 23:39:23 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse für Nullstellenfindung on Mon, 07 Sep 2015 00:09:01 GMT]]></title><description><![CDATA[<p>@Fernbedienung: Danke für die Hilfe <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>Hab jetzt denke ich besser verstanden wie Konstruktoren funktionieren.<br />
Allerdings gibt mir das Programm eine Fehlermeldung, wenn ich (double *fp)(double) hinschreibe, weil es mit den vielen Klammern irgendwie nicht klar kommt...</p>
<p>Deine Formulierung mit Nullstellenfunktion klingt definitiv besser <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="🙂"
    /> War mir bei der Zeigerdefinition ohnehin ziemlich unsicher, ich glaube da muss ich noch etwas mehr zu lernen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<pre><code>void set_NullstellenFunktion(double *Zeiger (double))
</code></pre>
<p>Müsste dieser Teil aber nicht eigentlich dann</p>
<pre><code>void set_NullstellenFunktion(double *NullstellenFunktion (double));
</code></pre>
<p>heißen?</p>
<p>Das double waaahrscheinlich nicht die richtige Wahl ist, habe ich mir schon gedacht, aber das kann ich nach Bedarf ja ändern, wenn ich weiter bin und mehr weiß <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/2467021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467021</guid><dc:creator><![CDATA[Mikomi]]></dc:creator><pubDate>Mon, 07 Sep 2015 00:09:01 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse für Nullstellenfindung on Mon, 07 Sep 2015 00:25:46 GMT]]></title><description><![CDATA[<p>Mikomi schrieb:</p>
<blockquote>
<p>Welche Bezeichner meinst du damit?</p>
</blockquote>
<p>Die Regeln gelten auch für Makros.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2467022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467022</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 07 Sep 2015 00:25:46 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse für Nullstellenfindung on Mon, 07 Sep 2015 00:30:01 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Mikomi schrieb:</p>
<blockquote>
<p>Welche Bezeichner meinst du damit?</p>
</blockquote>
<p>Die Regeln gelten auch für Makros.</p>
</blockquote>
<p>Hmm, komisch, gerade bei den Makros habe ich das in dem Beispiel gesehen, aber nun gut. Lässt sich ja schnell ändern, danke für den Hinweis <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/2467023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467023</guid><dc:creator><![CDATA[Mikomi]]></dc:creator><pubDate>Mon, 07 Sep 2015 00:30:01 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse für Nullstellenfindung on Mon, 07 Sep 2015 01:00:38 GMT]]></title><description><![CDATA[<p>Mikomi schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Warum eine Nullstellensuche überhaupt eine Klasse sein sollte, kann dir wohl nur dein Lehrer erklären. Oder auch nicht. Denn es sollte keine Klasse sein.</p>
</blockquote>
<p>Die Klasse zu erstellen ist erst der Anfang meines Projekts. Im späteren Teil soll ich einmal mittels friend-Funktion und anhand eines Beispiels die Klasse testen, allerdings ist die Klasse richtig zu programmieren derzeit mein größtes Problem an dem Projekt :S</p>
</blockquote>
<p>Es sollte trotzdem keine Klasse sein. Der Lehrer tippt in C++ aber denkt in Java.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2467024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467024</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 07 Sep 2015 01:00:38 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse für Nullstellenfindung on Mon, 07 Sep 2015 01:44:43 GMT]]></title><description><![CDATA[<blockquote>
<p>Allerdings gibt mir das Programm eine Fehlermeldung, wenn ich (double *fp)(double) hinschreibe, weil es mit den vielen Klammern irgendwie nicht klar kommt...</p>
</blockquote>
<p>Stimmt, sorry kleiner Tippfehler. <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>Es sollte trotzdem keine Klasse sein. Der Lehrer tippt in C++ aber denkt in Java.</p>
</blockquote>
<p>Die Philosophie von C++ und speziell die damit verbundene Objektorientierung ist eine Sache, das Vermitteln der Funktionalität eine andere.<br />
Wenn es jetzt darum ginge darüber zu diskutieren, ob man für Nullstellen eine Klasse anlegen sollte würden du und SeppJ mir ordentlich in den Hintern treten. Nach dem Lesen der Aufgabenstellung habe ich mir auch erst mal an den Kopf gefasst, trotzdem lassen sich die gelernten Funktionalitäten letztendlich Problemlos auf andere Klassen übertragen und das ist es, was für Anfänger zählt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2467025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467025</guid><dc:creator><![CDATA[Fernbedienung]]></dc:creator><pubDate>Mon, 07 Sep 2015 01:44:43 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse für Nullstellenfindung on Mon, 07 Sep 2015 06:27:48 GMT]]></title><description><![CDATA[<p>Fernbedienung schrieb:</p>
<blockquote>
<p>trotzdem lassen sich die gelernten Funktionalitäten letztendlich Problemlos auf andere Klassen übertragen und das ist es, was für Anfänger zählt.</p>
</blockquote>
<p>Kochkurs:<br />
So, wir machen jetzt Spaghetti. Holt mal die Pfannen raus.</p>
<p>Aber meine Mutter benutzt dazu einen Topf!</p>
<p>Ja, aber das Gelernte könnt ihr später auf Schnitzel übertragen.</p>
<p>Das funktioniert nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2467027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467027</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 07 Sep 2015 06:27:48 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse für Nullstellenfindung on Mon, 07 Sep 2015 10:25:34 GMT]]></title><description><![CDATA[<blockquote>
<p>Kochkurs:<br />
So, wir machen jetzt Spaghetti. Holt mal die Pfannen raus.</p>
<p>Aber meine Mutter benutzt dazu einen Topf!</p>
<p>Ja, aber das Gelernte könnt ihr später auf Schnitzel übertragen.</p>
</blockquote>
<p>Hier geht es erst mal darum den Herd zu bedienen mein Freund. Man kann dir noch so viele Töpfe und Pfannen um die Ohren hauen. Wenn du nicht weißt wie der Herd bedient wird musst du dir wohl weiterhin Hamburger in die Mikrowelle schieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2467040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467040</guid><dc:creator><![CDATA[Fernbedienung]]></dc:creator><pubDate>Mon, 07 Sep 2015 10:25:34 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse für Nullstellenfindung on Mon, 07 Sep 2015 15:45:13 GMT]]></title><description><![CDATA[<p>Finde die Diskussion über die Aufgabenstellung sehr interessant <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Leider habe ich nicht die Wahl, ob ich es mit oder ohne Klasse programmiere, andernfalls wäre ich die Aufgabe auch anders angegangen <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>Habe jetzt versucht die Vorschläge einzubauen, bin mir hier und da allerdings noch etwas unsicher, ob ich es richtig gemacht habe. Ist folgender Code besser?</p>
<pre><code>#ifndef NULLSTELLE_H
#define NULLSTELLE_H
class Nullstelle {

	private:
	double *NullstellenFunktion (double);                                //Zeiger auf Funktion f; f liegt in [a,b] und ist daher von Typ double
    double Untergrenze, Obergrenze;                                      //Intervallränder eines abgeschlossenen Intervalls [a,b]
    double epsilon;                                                      //Genauigkeitsschranke epsilon
    int i_max;                                                           //maximale Anzahl Iterationen i_max für Nullstellensuche

    public:
    	                                                                 //Deklaration des Konstruktors
    Nullstelle(double *NullstellenFunktion(double), double Untergrenze, double Obergrenze, double epsilon, int i_max);

    void set_NullstellenFunktion(double *NullstellenFunktion(double));   //geeignete Set- und Get- Methoden
    double get_Nullstellen();
    void set_Untergrenze(double a);
    double get_Untergrenze() const;
    void set_Obergrenze(double b);
    double get_Obergrenze() const;
	void set_epsilon(double epsilon);  
    double get_epsilon() const;
	void set_i_max(int i_max);
    int get_i_max()const;

};

#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2467086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467086</guid><dc:creator><![CDATA[Mikomi]]></dc:creator><pubDate>Mon, 07 Sep 2015 15:45:13 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse für Nullstellenfindung on Mon, 07 Sep 2015 17:04:41 GMT]]></title><description><![CDATA[<p>Deine Funktionszeiger sind keine.<br />
double *NullstellenFunktion(double) deklariert eine Funktion namens NullstellenFunktion mit double als Argument und double* als Rückgabewert.</p>
<p>get_Nullstellen war nirgendwo verlangt. Und sollte wohl mindestens const sein.</p>
<p>Außerdem ist es verwirrend: &quot;Nullstelle<strong>n</strong>&quot;? Sind das nun eine oder mehrere? Wie gibst du mehrere zurück? Warum heißt die Klasse dann &quot;Nullstelle&quot;? Die Ursache dieser Probleme liegt natürlich darin, dass die Aufgabenstellung Mist ist; eine zufriedenstellende Lösung innerhalb der Vorgaben wird schwer zu finden sein.</p>
<p>PS: Was, wenn es keine Nullstelle gibt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2467092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467092</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 07 Sep 2015 17:04:41 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse für Nullstellenfindung on Mon, 07 Sep 2015 16:54:06 GMT]]></title><description><![CDATA[<p>Mach ein using und nenn die klasse um wenn du darfst:</p>
<pre><code>using Function = double(*)(double);

class BoundedFunction
{
    Function f;
    double lowerBound, upperBound, eps;
    unsigned int maxIter;

public:
    BoundedFunction(Function f, double lowerBound, double upperBound, double eps, unsigned int maxIter);
    // Getter/Setter hier

    // Für beliebig viele Nullstellen kannst du z.B. std::vector nehmen
    // &quot;find&quot; ist da auch besser, weil nicht nur ein simpler Getter
    // &quot;Roots&quot; statt &quot;Nullstellen&quot; um nicht Deutsch und Englisch zu mischen
    std::vector&lt;double&gt; findRoots();
};
</code></pre>
<p>dann gibts weniger Logikprobleme und das lebeln wird leichter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2467098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467098</guid><dc:creator><![CDATA[Denglisch]]></dc:creator><pubDate>Mon, 07 Sep 2015 16:54:06 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse für Nullstellenfindung on Mon, 07 Sep 2015 17:20:16 GMT]]></title><description><![CDATA[<p>Es soll nur eine Nullstelle gefunden werden. Sorry, das war vermutlich etwas unverständlich formuliert.<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a>: Wie könnte ich den Funktionszeiger denn richtig formulieren?</p>
<p>@Denglisch: Danke für den Vorschlag, leider ist bereits in den Nachfolgenden Teilen vorgegeben wie ich an die Nullstelle gelangen soll <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>Der nächste Aufgabenteil ist auch ein wenig komplexer:<br />
Man ergänze die Klasse um eine Memberfunktion, die für eine gegebene Funktion f die Bedingung f(a) · f(b) &lt; 0 überprüft und im positiven Fall eine Nullstelle nach folgender Vorschrift (Regula falsi) annähert:<br />
setze c = a - f(a)<em>((a-b)/(f(a)-f(b)))<br />
setze i = 0<br />
wiederhole solange |b - a| &gt; eps und f(c) /= 0 und i &lt; imax<br />
falls (f(a) · f(c) &lt; 0)<br />
ersetze b durch c<br />
sonst<br />
ersetze a durch c<br />
setze c = a - f(a)</em>((a-b)/(f(a)-f(b)))<br />
erhöhe i = i + 1<br />
Ist f(a) · f(b) = 0 so soll entweder a oder b als Nullstelle gefunden werden. Im Fall f(a) · f(b) &gt; 0 soll die Berechnung ausgesetzt werden und eine entsprechende Meldung am Bildschirm ausgegeben werden (Das würde SeppJs Frage entsprechen was ist, wenn keine Nullstelle gefunden wird)</p>
<p>Mein erster Ansatz (vermutlich voller Fehler) wäre:</p>
<pre><code>void Regula_Falsi(double epsilon, int i_max, double a, double b) {   //Regula Falsi Bedingung
    	int i = 0;                                                       //Starte mit i=0 = #Iterationen
    	double c; 
    	while (i &lt; i_max, f(c)!= 0, abs(b-a) &gt;= epsilon) {               // f:=NullstellenFunktion (später ändern)
    		if (f(a)*f(b) &lt; 0) {
    			c = a - ((a - b)/(f(a) - f(b)))*f(a);
    		}
    		if (f(a)*f(c) &lt; 0) {
    			b = c;                                         // Ersetze b durch c, a wie zuvor
    		}
    		else {
    			a = c;                                         // Ersetze a durch c, b wie zuvor (noch nicht sicher, ob es so funktioniert)
    		}
    		i++                                                // Setze i=i+1

    		if (f(a)*f(b) &gt; 0)                                 // Fallunterscheidung, nicht sicher ob man das so in eine while Schleife bauen kann
    		cout &lt;&lt; &quot;Berechnung wird ausgesetzt&quot; &lt;&lt; endl;
    		if (f(a)*f(b) = 0) {                               // Bei =0 ist entweder a oder b Nullstelle von f
    			f(a) = 0 oder f(b)=0                           // Nicht sicher wie man dieses entweder-oder schreiben soll
    		}

    	}
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2467099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467099</guid><dc:creator><![CDATA[Mikomi]]></dc:creator><pubDate>Mon, 07 Sep 2015 17:20:16 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse für Nullstellenfindung on Mon, 07 Sep 2015 17:33:32 GMT]]></title><description><![CDATA[<p>Mikomi schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a>: Wie könnte ich den Funktionszeiger denn richtig formulieren?</p>
</blockquote>
<pre><code>double (*wie_auch_immer_das_ding_heißen_soll)(double);
</code></pre>
<blockquote>
<p>@Denglisch: Danke für den Vorschlag, leider ist bereits in den Nachfolgenden Teilen vorgegeben wie ich an die Nullstelle gelangen soll <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>Schade, denn der Vorschlag war gut und ist eine der Möglichkeiten, der Aufgabenstellung noch einen Sinn zu entlocken. Aber wenn ich solche Anforderungen lese, bekomme ich eher das Würgen und bemitleide dich:</p>
<blockquote>
<p>Ist f(a) · f(b) = 0 so soll entweder a oder b als Nullstelle gefunden werden. Im Fall f(a) · f(b) &gt; 0 soll die Berechnung ausgesetzt werden und eine entsprechende Meldung am Bildschirm ausgegeben werden (Das würde SeppJs Frage entsprechen was ist, wenn keine Nullstelle gefunden wird)</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2467100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467100</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 07 Sep 2015 17:33:32 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse für Nullstellenfindung on Mon, 07 Sep 2015 17:51:59 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a>: Freut mich zumindest, dass ich nicht der einzige bin, dem diese Aufgabenstellung zuwider ist. Leider habe ich keine Wahl als der Aufgabenstellung zu folgen. Andere Lösungswege werden nicht akzeptiert.<br />
Und leider muss ich letzten Endes mit der vorgegebenen &quot;Klassen&quot;-Methode ein fehlerfreies Programm schreiben um den Einführungskurs abzuschließen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2467101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467101</guid><dc:creator><![CDATA[Mikomi]]></dc:creator><pubDate>Mon, 07 Sep 2015 17:51:59 GMT</pubDate></item></channel></rss>