Anwenden eines Algorithmus
-
Hallo,
ich hab ein kleines C++Program geschrieben, das mir irgendwelche Komplexe Zahlen (Reel und Imaginaire Teil) in einer Schleife generiert.
Ich will mit den generierten Zahlen weitere Berechnungen führen, aber ich finde leider den passenden Algorithmus nicht.
Ich will folgendes tun:
(erste reelle Zahl , ertste imaginäre Zahl ) * ( 1.0 , 0.0) = A
(zweite reelle Zahl, zweite imaginäre Zahl) * A = B
( dritte reelle Zahl, dritte imaginäre Zahl ) * B = C
( vierte reelle Zahl, vierte imaginäre Zahl ) * C = D
USW....
In den Worten: Die ersten Komplexe Zahlen, die rauskommen müssen mit den Komplexen Zahlen (reel-Teil = 1.0, imaginär-Teil = 0.0) komplex multipliziert werden, das Ergebnis (auch Komplex) wird mit den nächsten kommenden komplexen Zahlen multipliziert werden. usw.. bis zum Ende der kommenden Daten.
Wie zwei Komplexe Zahlen multipliziert werden, ist kein Problem, das kann ich. Aber der Algorithmus für diese Berechnungen in der Schleife fehlt mir.Ich brauche deswegen Euere Hilfe.
Danke voraus.
Gruß
-
du möchtest einfach nur eine Iteration haben?
Prinzip-Algo:
complex c = komplexe_zahlen_array[0]; // mit erster Zahl initialisieren int zahl_nr = 1; while(zahl_nr < anzahl_zahlen) { c = c * komplexe_zahlen_array[zahl_nr]; zahl_nr++; }; cout << c;
-
btw gibt es in C++ eine fertige complex-Klasse bzw ein template.
complex<float> oder auch complex<double> sollte deinen Ansprüchen genügen.
-
crashterpiece schrieb:
du möchtest einfach nur eine Iteration haben?
Prinzip-Algo:
complex c = komplexe_zahlen_array[0]; // mit erster Zahl initialisieren int zahl_nr = 1; while(zahl_nr < anzahl_zahlen) { c = c * komplexe_zahlen_array[zahl_nr]; zahl_nr++; }; cout << c;Ja ich möchte nur einen Iterator haben. Ich werde es probieren, was Du geschickt hast. Danke
-
Es geht sogar noch kürzer:
vector<complex<double> > eingaben; complex<double> produkt = accumulate(eingaben.begin(),eingaben.end(),complex<double>(1.0),multiplies<double>());