variable argumenteliste bei funktionen
-
Hi,
ich verstehe nicht, was ein Buchstabe ("char") in einem Polynom zu suchen hat.
Insgesamt scheint mir, dass Du noch nicht wirklich weißt, was Du da implementieren willst ...
Für variable Parameterlisten gibt's immer noch prima den std::vector - der ist prima.
und wenn Du pro Term mehrere Angaben machen möchtest (Parametername, exponent, Wert, ...) kannst Du die gut in einen struct packen, der dann in den vector wandert.Gruß,
Simon2.
-
also ich weiß schon was ich implementieren will, weil es bis auf die Sache mit der variablen Parameterliste schon alles implementiert ist. Das mit dem char war nur ein Beispiel um das Prinzip zu erklären.
Die Idee ist einfach das man allg., wie in der Algebra, Polynome über bestimmten Ringen definieren kann. Somit könnte man als Templateargumente eigene Klassen übergeben, die die Ringeigenschaften erfüllen und schon hat man den Polynomring dazu. Sowas ist natürlich nur für Leute wie mich als Mathematiker interessant. Und ich wollte halt wissen ob es variable Argumentlisten dieser Art gibt, was aber offensichtlich nicht so ist. Die alternative Übergabe mit einem Array ist schon implementiert, aber muss der User dafür halt extra ein Array deklarieren. Letztendlich ist es nur Schönheitskorrektur und wäre schön gewesen wenn es ginge.
-
FreakyBKA schrieb:
Letztendlich ist es nur Schönheitskorrektur und wäre schön gewesen wenn es ginge.
sicher geht das. variable anzahl von argumenten kann man als zeiger übergeben.
oder du übergibst eine zeichenkette der form "a0*x^0 + a1*x^1 + a2*x^2 + ... + an*x^n"
die du dann parsen kannst.
der vorteil bei der zeichenkette ist ganz klar:
es können mehrere xn an unterschiedlichen positionen auftauchen.
variabler geht es nicht.
der aufwand fürs parsen ist relativ gering, du hast nur zwei operatoren und zahlenwerte.
-
agga ugga schrieb:
"a0*x^0 + a1*x^1 + a2*x^2 + ... + an*x^n"
wenn die Polynome denn so einfach wären

ein allg. Polynom besteht aus einer endlichen Summe von Termen, die wiederum das Produkt eines Koeffizienten und endlich vielen Variablen sind.
Die Parameter bestimmen dann den Wert den die jeweiligen Variablen annehmen sollen.
Da als Parameter wie gesagt potentiell beliebige Klassen möglich sind, fällt da meines erachtens ein String als Parameter raus.
-
Hilft dir http://www.ddj.com/cpp/184403542 ?
-
also der artikel beschreibt zwar eine möglichkeit, wie man beliebige argumentlisten erzeugen kann, jedoch stört mich die form, dass man jedes argument klammern muss. und da es hier wie gesagt nur um ästhetik und bequemlichkeit geht, ist das nicht passend.
also nochmal ich möchte etwas folgender art machen könnenpolynomial p; //... p(1,2); p(0,7,3); p(2,25, ...);
-
FreakyBKA schrieb:
also nochmal ich möchte etwas folgender art machen können
Und nochmal:
das geht so nicht.Man kann nur etwas aehnliches erreichen.
-
schade halt

-
ich darf mal eben ein voriges zitat aufgreifen:
FreakyBKA schrieb:
ich hab eine polynomklasse, mit beliebig vielen variablen. und da möchte ich jetzt per übergabe von argumenten, den wert des polynoms ausrechnen.
Idee:
f(x,y,z) := x^2 + y + z
g(x,y) := x + y^2das ist in meinen augen ein string, den man parsen kann. die geparsten elemente kann man dann in klassen speichern.
oder wie willst du die eingabe realisieren.FreakyBKA schrieb:
agga ugga schrieb:
"a0*x^0 + a1*x^1 + a2*x^2 + ... + an*x^n"
wenn die Polynome denn so einfach wären

ein allg. Polynom besteht aus einer endlichen Summe von Termen, die wiederum das Produkt eines Koeffizienten und endlich vielen Variablen sind.
Die Parameter bestimmen dann den Wert den die jeweiligen Variablen annehmen sollen.das ist ein allgemeines polynom vom grad n

-
die polynome hab ich doch schon

[quote="agga ugga"]
FreakyBKA schrieb:
agga ugga schrieb:
"a0*x^0 + a1*x^1 + a2*x^2 + ... + an*x^n"
wenn die Polynome denn so einfach wären

ein allg. Polynom besteht aus einer endlichen Summe von Termen, die wiederum das Produkt eines Koeffizienten und endlich vielen Variablen sind.
Die Parameter bestimmen dann den Wert den die jeweiligen Variablen annehmen sollen.das ist ein allgemeines polynom vom grad n

ist es nicht denn es hat nur eine variable, nämlich x. ein allgemeines polynom hat beliebig viele variablen x1,...,x_n bzw x,y,z,usw.
ich will ja nicht die polynome parsen, das hab ich shcon längst.
-
Wenn's du es wirklich brauchst dann schau dir mal, wie schon einmal vorgeschlagen wurde, die boost.preprocessor Bibliothek an. Da werden mit Hilfe des Proprocesors eine Reihe von überladenden Funktionen erzeugt welche alle eine unterschiedliche Anzahl von Parametern erwarten. Das Resultat sollte genau das sein welches du erwartest.