[C++] Frage bzgl. komplexen Zahlen

HCI

Grünschnabel
Hallo, hier bin ich schon wieder mit einer Frage, diesesmal über komplexen Zahlen. Ist folgendes richtig?

Code:
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
  double ... , a1,a2,b1,b2;
  //Liest Realteil von a ein
    cout << "Re(a) = ";
    cin >> a1;
  //Liest Imaginaerteil von a ein  
    cout << "Im(a) = ";
    cin >> a2;
    //Liest Realteil von b ein
    cout << "Re(b) = ";
    cin >> b1;
    //Liest Imaginaerteil von b ein
    cout << "Im(b) = ";
    cin >> b2;
    ... 
  // Zeige das Ergebnis auf dem Bildschirm an
     ...
    system("PAUSE");	
  return 0;
}

ich möchte folgende operation implemetieren:

ich will z.B das produkt von zwei komplexen zahlen implementieren:

a*b = (‹Re(a)*Re(b)›)+i*(‹Im(a)*Im(b)›)
wobei nur das Re(a)*Re(b) ausgerechnet wird bzw. das Im(a)*Im(b)
alles andere wie klammern, das i werden vom programm selbst gesetzt

Mich interessiert vor allem ob der "kopf" des Programms richtig ist.
Hoffe, dass ihr mir helfen könnt. Wenn es falsch ist, wie deklariere ich es richtig für berechnungen mit komplexen zahlen für eine solche art von rechnung?

Thx schon mal für Antworten.

Gruss HCI
 
Zuletzt bearbeitet:
Ich bin nicht sicher, ob ich deine Frage richtig verstehe, aber der Code sieht soweit vernünftig aus, abgesehen von den "...".

Vielleicht wäre es für dich sinnvoll, eine einfache Klasse zur Repräsentation von komplexen Zahlen zu bauen. Ich denke da an so etwas wie:

Code:
class complex
{
// Achtung, Klasse ist zwar verwendbar, aber unvollständig! 
public:
  double re; // realteil
  double im;  // imaginärteil

  // Konstruktoren...

  // Operatoren...
};

Dafür könnstet du dann unter anderem ein paar Operatoren definieren, die zum Beispiel die Multiplikation erledigen. Eine Klasse für komplexe Zahlen ist natürlich keine ganz neue Idee, aber es ist eine sehr gute Übung. Und die Klasse wäre sicherlich sehr nützlich.
 
Sorry aber wenn man 2 komplexe Zahlen multipliziert kommt nicht a*b = (‹Re(a)*Re(b)›)+i*(‹Im(a)*Im(b)›) raus !

Das Ergebnis ist:

a*b = ( Re(a)*Re(b) - Im(a)Im(b) ) + i *( Im(a)Re(b) + Im(b)*Re(a));
 
stimmt, hab ich gestern abend auch herausgefunden, nachdem ich mal das ganze auf papier probiert habe.
 
Zurück