2017-04-25 9 views
3

So habe ich eine Polynom Additionsaufgabe wie unten:dynamische Zuweisung eines Arrays von einer Polynomfunktion String

(1*x+2*x^3-1*x+7)+(1+1*x^2-1*x+1*x^4) 

ich brauche, herauszufinden, wie die Zahlen für die Koeffizienten und Exponenten zu extrahieren und geben Sie diese in ein dynamisch zugewiesenes 2D-Array (von hier aus kann ich sie sortieren und sie vor der Ausgabe der Antwort hinzufügen).

Ich bin ziemlich verloren, wie dies zu tun ist, weil die Polynome in beliebiger Reihenfolge von Graden sein können und beliebig viele Terme enthalten können. Ich kann sie dynamisch zuweisen, nachdem ich alle Zahlen extrahiert habe. Der Teil I helfen zu müssen, ist:

  • alle Zahlen Extrahierung
  • zwischen ihnen Differenzieren zu sehen, ob es ein Koeffizient oder ein Exponent ist
  • erlaubt dies für eine beliebige Anzahl von Begriffen geschehen

Wenn jemand dies beantworten könnte oder mir zumindest in die richtige Richtung zeigen würde, würde es geschätzt werden.

+1

Was Sie suchen genannt 'std :: VECTOR' und entweder ein Begriff Klasse mit zwei Mitgliedern oder ein' std :: pair'. – NathanOliver

Antwort

0

Um Koeffizienten aus einer Zeichenfolge zu extrahieren, müssen Sie einen Parser erstellen. Sie können spezielle Bibliothek wie boost.spirit verwenden, können Sie ein spezielles Tool verwenden, das Parser wie Flex erstellt, oder Sie können Ihre eigenen manuell mit regulären Ausdrücken oder nicht.

speichern coeficients Sie std::vector<int> mit Indizes als Potenz von x verwenden können, so dass für 1 * x + 2 * x^3-1 * x + 7 Ihre Vektor würde Daten:

{ 7, -1, 0, 2 } // 7*x^0 + -1*x^1 + 0*x^2 + 2*x^3 

Sie dann Sie müssen sie nicht sortieren, um Koeffizienten hinzuzufügen. Um alle Polynome zu speichern, würden Sie std::vector<std::vector<int>> entsprechend verwenden.