Ich hab folgendes Programm geschrieben:
Dieses berechnet mir das Produkt von zwei Komplexen Zahlen a und b.
das erst Ergebnis (a*b) ist das Produkt von a und b
das zweite Ergebnis (a*b)^(-1) ist das Inverse zum Produkt von a und b
das dritte Ergebnis (a*b)*(a*b)^(-1) liefert das Produkt vom Inversen und Produkt.
Mein Problem liegt jetzt beim dritten Ergebnis.
Im Bereich der ganzen Zahlen leifert es das Ergbnis 0, was hier auch der Fall ist, aber ich rechne hier im Geltikommazahlen Bereich, d.h. beim dirtten Ergebnis soll nicht 1 + i * 0 herauskommen, sondern 1 + i * (....).
Das heisst ich will verhindern, dass das Programm mir beim dritten Ergbnis aufrundet, namlich statt einer ganz kleinen Zahl einfach auf 0 zu runden.
Bsp: (5.42101e-20) wird zum beispiel zu 0 gerundet.
Dies will ich aber verhindern. Wie kann ich die Berechnung vom dritten Ergebnis so umschreiben, dass das Programm eben nicht aufrundet.?
Hoffe mir kann jemand helfen.
Gruß HCI
Code:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(int argc, char *argv[])
{
double a1,a2,b1,b2,diff,summ,qdiff,qsumm;
// 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;
// Berechnet Differenz von Realteilen von a und b ein
diff = (a1*b1) - (a2*b2);
// Berechnet Summe von Imaginaerteilen von a und b ein
summ = (a1*b2) + (a2*b1);
// Berechne Quadrat von diff
qdiff = diff * diff;
// Berechne Quadrat von summ
qsumm = summ * summ;
/* Gebe Ergebnis auf dem Bildschrim aus */
cout << "a*b = " <<"("<<diff<<")+i*("<<summ<<")"<<endl;
cout << "(a*b)^(-1) = " <<"("<<diff/(qdiff+qsumm)<<")+i*("<<
-(summ/(qdiff+qsumm))<<")"<<endl;
cout << "(a*b)*(a*b)^(-1) = "<<"("<<(qdiff+qsumm)/(qdiff+qsumm)<<")+i*("<<
(-((diff*summ)/(qdiff+qsumm))+((diff*summ)/(qdiff+qsumm)))<<")"<<endl;
system("PAUSE");
return 0;
}
Dieses berechnet mir das Produkt von zwei Komplexen Zahlen a und b.
das erst Ergebnis (a*b) ist das Produkt von a und b
das zweite Ergebnis (a*b)^(-1) ist das Inverse zum Produkt von a und b
das dritte Ergebnis (a*b)*(a*b)^(-1) liefert das Produkt vom Inversen und Produkt.
Mein Problem liegt jetzt beim dritten Ergebnis.
Im Bereich der ganzen Zahlen leifert es das Ergbnis 0, was hier auch der Fall ist, aber ich rechne hier im Geltikommazahlen Bereich, d.h. beim dirtten Ergebnis soll nicht 1 + i * 0 herauskommen, sondern 1 + i * (....).
Das heisst ich will verhindern, dass das Programm mir beim dritten Ergbnis aufrundet, namlich statt einer ganz kleinen Zahl einfach auf 0 zu runden.
Bsp: (5.42101e-20) wird zum beispiel zu 0 gerundet.
Dies will ich aber verhindern. Wie kann ich die Berechnung vom dritten Ergebnis so umschreiben, dass das Programm eben nicht aufrundet.?
Hoffe mir kann jemand helfen.
Gruß HCI