\\Complex2.h
#ifndef _COMPLEX_H
#define _COMPLEX_H
#include <iostream>
using namespace std;
class Complex {
private : double Real;
double Imaginaerteil;
public :
Complex();
Complex(double , double );
void printf();
int getSign(double , double );
void sub (Complex *);
void add (Complex*);
void mul (Complex* );
void div (Complex* );
void Cop(Complex*C);
void setReal(double r);
void setImaginaerteil(double i);
void complexConjugate();
};
class Polar : Complex{
private:
double r;
public :
Polar(Complex *c);
double abs();
};
#endif
\\Complex2.cpp
#include"Complex2.h"
Complex::Complex(){
double Real =0;
double Imaginaerteil=0;}
Complex::Complex(double Real, double Imaginaerteil){
this->Real=Real;
this->Imaginaerteil= Imaginaerteil;}
int Complex::getSign(double re, double img){
if ( img > 0) return 1 ;
else return -1;}
void Complex::printf(){
int Sign = getSign(Real, Imaginaerteil);
if ( Sign==1){
cout<<Real<<" + "<< Imaginaerteil<< "J\n"<<endl;
cout<<" Der Imaginaerteil ist positiv\n"<<endl;}
else{
cout<<Real<<" "<< Imaginaerteil<< "J\n"<<endl;
cout<<" Der Imaginaerteil ist negativ\n"<<endl;
}}
void Complex::sub (Complex *z){
Real = Real- z->Real;
Imaginaerteil = Imaginaerteil - z->Imaginaerteil;}
void Complex::add (Complex *z){
Real = Real+ z->Real;
Imaginaerteil = Imaginaerteil + z->Imaginaerteil; }
void Complex::Cop(Complex*C){
this->Real = C->Real;
this->Imaginaerteil= C->Imaginaerteil;}
void Complex::mul (Complex *m){
double tmp;
tmp=Real;
Real = Real* m->Real - Imaginaerteil * m-> Imaginaerteil;
Imaginaerteil =tmp* m->Imaginaerteil + Imaginaerteil * m->Real;}
void Complex::div(Complex*m) {
double nenner, hilf;
hilf = Real;
nenner = m->Real* m->Real + m->Imaginaerteil* m->Imaginaerteil;
Real =( Real*m->Real + Imaginaerteil* m->Imaginaerteil)/nenner ;
Imaginaerteil = ( hilf*m->Imaginaerteil -Imaginaerteil * m->Real)/nenner;}
void Complex ::setReal(double r){
Real=r;
};
void Complex ::setImaginaerteil(double i){
Imaginaerteil=i ;
};
void Complex::complexConjugate(){
Real = Real;
Imaginaerteil = - Imaginaerteil;
}
Polar::Polar(Complex *c):Complex(){
double r=0;
double phi=0;
};
double Polar::abs(){
return sqrt((Real*Real)+ (Imaginaerteil*Imaginaerteil));
}
\\TestKomplex2.cpp
#include<cmath>
#include <cstdlib>
#include <iostream>
#include "Complex2.cpp"
using namespace std;
int main(){
Complex * z1 = new Complex(1,1);
Complex * z2 = new Complex(1,1);
Complex * Substraktion = new Complex();
Complex * Summe = new Complex();
Complex * Multiplikation = new Complex();
Complex * Division = new Complex();
Complex * k=new Complex();
cout << "Erste Zahl : " ;
z1->printf();
cout << "Zweite Zahl: " ;
z2->printf();
*Substraktion=*z2;
Substraktion ->sub(z1);
cout<<"Die Substraktion gibt : ";
Substraktion->printf();
*Summe =*z2;
Summe -> add(z1);
cout<<"Die Summe gibt : ";
Summe->printf();
*Multiplikation =*z2;
Multiplikation -> mul(z1);
cout<<"Die Multiplikation gibt : ";
Multiplikation->printf();
*Division = *z2;
Division->div(z1);
cout<< "Die Division gibt :";
Division->printf();
cout<<"Eine kopie von der Zahl Z1 ist ";
k->Cop(z1);
k->printf();
cout<< "Die konjugierte Zahl fuer z1 lautet:";
z1->complexConjugate();
z1->printf();
cout<< "Die konjugierte Zahl fuer z2 lautet:";
z2->complexConjugate();
z2->printf();
z1->abs();
cout<<"betrag r ist "<<z1->abs()<<endl;
system("PAUSE");
return 0;}