Polynomklasse
-
Hallo,
ich habe folgende Klasse für Polynome vorgegeben und muss jetzt eine Funktion schreiben, die ein Polynom ableitet ( deriv() ) und eine die zwei Polynome miteinander multipliziert ( multiply(const CPolynom&) )#include <iostream> using namespace std; class CPolynom { private: int degree; double * coeff; public: CPolynom(const CPolynom &); CPolynom(int d) { coeff = new double[d+1]; degree = d; }; virtual ~CPolynom() { delete [] coeff; }; int getDegree() const { return degree; }; double * getCoeff() const { return coeff; }; CPolynom deriv() const; //NOCH ZU IMPLEMENTIEREN CPolynom multiply(const CPolynom& p) const; //NOCH ZU IMPLEMENTIEREN }; CPolynom::CPolynom(const CPolynom & p) { degree = p.getDegree(); coeff = new double[degree+1]; double * coeff2 = p.getCoeff(); for(int i=0; i<=degree; i++) coeff[i] = coeff2[i]; }Wäre nett wenn mir jmd helfen könnte
-
sp1nnaker schrieb:
Wäre nett wenn mir jmd helfen könnte
Klar, kein Problem.
Wenn du eine Frage hast, solltest du sie aber stellen. Wir sind keine Hellseher.
-
sp1nnaker schrieb:
Wäre nett wenn mir jmd helfen könnte
Ok, also das Ableiten und Multiplizieren müsstest Du selbst mit ein bischen Nachdenken hinbekommen. Das ist auch eher ein Matheproblem statt C++-Problem.
Und sonst ist mir aufgefallen, dass Du die "Dreierregel" verletzt. Du hast das Überschreiben des Zuweisungsoperators vergessen. Viel besser wär's aber gewesen, wenn Du statt des Zeigers einfach einen
std::vectorfür die Koeffizienten benutzt hättest. Dann bräuchtest Du Dich nämlich gar keinen eigenen Kopier-Konstruktor, Destruktor und Zuweisungsoperator.Gruß,
SP
-
@Sebastian: Ich denke dieser Code ist 1:1 so in der Angabe vorgegeben und es geht ihm nun um die Durchführung des Programmierbeispiels durch ein Forenmitglied

Eigentlich sollte das ja an Unis Konsequenzen haben, aber da das ungestraft bleibt versuchen die das munter weiter

MfG SideWinder
-
Ich würd gern noch ein Zitat aus der C++ FAQ bringen:
Jack Klein schrieb:
If I did your homework for you, then you might pass your class without learning how to write a program like this. Then you might graduate and get your degree without learning how to write a program like this. You might become a professional programmer without knowing how to write a program like this. Someday you might work on a project with me without knowing how to write a program like this. Then I would have to do you serious bodily harm.
Gruß,
SP
-
Sebastian Pizer schrieb:
...
Jack Klein schrieb:
If I did your homework for you, then you might pass your class without learning how to write a program like this. Then you might graduate and get your degree without learning how to write a program like this. You might become a professional programmer without knowing how to write a program like this. Someday you might work on a project with me without knowing how to write a program like this. Then I would have to do you serious bodily harm.
...
Ich befürchte nur, dass da zuviele "mights" drin sind, um Schnorrer wirklich abzuschrecken.
... ganz zu schweigen vom impliziten "might" am Ende:
Jack Klein schrieb:
...
Someday you might work on a project with me without knowing how to write a program like this as my boss (because of your ability to disguise your lack of any skill with the work of others). Then I would suffer serious mental harm - what you will ignore completely....
Gruß,
Simon2.
-
Also, mein Problem liegt nicht in der Mathematik sondern mehr in C++:
Ich würde theoretisch das Polynom in ein neues Polynom kopieren, dieses ableiten und dann zurückgeben, leider weiß ich nicht wie ich das machen soll.
Der Algorithmus selbst ist ja recht einfach:
for(int i=0; i<degree; i++) { coeff[i] = coeff[i+1] * (i+1); } degree--;Ist übrigens keine Hausaufgabe, sondern nur für mich zum Verständnis
Gruß
-
Bring doch erstmal Deine Klasse in Ordnung.
- mach den Konstruktor mit demint d-Parameter explizit.
- EinvirtualDestruktor ist hier unnötig.
- Definiere einen eigenen Zuweisungoperator oder verwende einfach einenstd::vector<double>stattdouble*undintals Objektelemente. Dann könntest Du Dir nämlich alle drei Funktionen sparen.Letzteres ist ein dicker Fehler, der dazu führen kann, dass Dein Programm sich komisch verhält oder sogar abstürzt.
Ich würde theoretisch das Polynom in ein neues Polynom kopieren, dieses ableiten und dann zurückgeben,
Dann mach das doch. Wo liegt denn da das Problem? Du musst da schon n bissel mehr schreiben als "leider weiß ich nicht wie ich das machen soll".
Gruß,
SP