Variablen über Eingabe zuweisen?
-
Hallo, ich habe folgendes Problem:
Ich möchte eine Klasse schreiben die mir eine Differntialgleichung mit verschiedenen Algorithmen integrieren kann und möchte aber wenn möglich nicht immer im Code selbst meine DGL zuweisen müssen sondern das auch per Eingabe machen können.
Mein Programm soll mich also fragen "Wie lautet Ihre DGL: y'= ???"
Wenn ich jetzt z.B. yn + t * yn eingebe müsste müsste im Algorithmus, bzw. in der berechnenden Funktion, der Variablen y' dann eben irgendwie die Rechenvorschrift yn+t*yn zugewiesen werden.
Leider weiß ich nicht wie man sowas bewerkstelligt und habe auch kein derartiges Beispiel irgendwo finden können.
Für einen Tip zur rangehensweise wäre ich sehr dankbar
Gruß
-
Schau dir mal die Funktion getline an.
-
Danke erstmal für die Antwort. Die Funktion kenne ich, aber die liest, bzw. gibt mir einen string aus. Meine Funktion im Beispiel muss aber die einzelnen Teile, also yn,t als Variablen erkennen und das + als mathematischen Operator! So würde ich ja versuchen einer double Variablen (y') einen string zuzuweisen! Ich definiere praktisch drei Variablen
double y',yn,t
und meine Eingabe muss mir dann den mathematischen Ausdruck aus yn,t und verschiedenen mathematischen Operatoren an y' zuweisen können!
Vielleicht verstehe ich auch nicht das ich das mit getline machen kann, sorry!
-
Wenn du deine Eingabe als std::string vorliegen hast, kannst du ja jedes einzelnes zeichen iterieren und bei Bedarf zB mit ostringstream zu ner zahl konvertieren.
Ich würde wahrscheinlich die Eingabe vorberarbeiten dass zB vor und nach jeder Zahl/variablen/rechenzeichen ein whitespace ist. ostringstream gibt dir dann mit operator<< die einzelnen "wörter" bzw zahlendouble d;
ostringstream;
d << stream;
-
Vielen Dank schonmal, das ist zwar jetzt Neuland für mich, aber ich werd versuchen ob ich rausfinde wie Du das meinst!
Gruß
-
Sorry, ich glaub ich hab dich falsch vertanden. Du willst schon mit konkreten Funktionstermen ohne variablen arbeiten?
Also die eingabe lautet y = 3 * x + 2 ?
-
Ich möchte eine beliebige, selbst einzugebende Differentialgleichung
dy/dt=g(y,t) mit z.B. dem Eulerverfahren integrieren. Die wichtige Funktion darin ist folgende:double IntEuler::Euler(double yn, double tn)
{
double y;y=h*(yn+tn*yn)+yn;
return y;
}das ist das Eulerverfahren, in dem später über eine Schleife diese Funktion immer wieder aufgerufen und Stück für Stück integriert wird:
Der fette Ausdruck in der Klammer ist das g(y,t), also die Variablen die ich gerne von einer Eingabe abhängig machen würde, d.h. das ich dort wärend der Laufzeit sagen kann: ach ich will jetzt gerne da drin yn*yn +tn-yn stehen haben oder so und er mir trotzdem das so verarbeitet als hätte ich es direkt im Code zugewiesen!