egg_89 2016-07-03 18:37 采纳率: 0%
浏览 1137
已结题

谁能帮我看看 这个代码问题出在哪?( linux c++ makefile)复数四则运算

methode.h

/* Klassendefinition*/

using namespace std;

class COMPLEX
{
public:
COMPLEX(void){};
COMPLEX(float,float,int);
void ein();
void aus(int);
friend float RE(COMPLEX);
friend float IM(COMPLEX);
friend float ABS(COMPLEX);
friend float ANGLE(COMPLEX);
friend COMPLEX operator+(COMPLEX, COMPLEX);
friend COMPLEX operator-(COMPLEX, COMPLEX);
friend COMPLEX operator*(COMPLEX, COMPLEX);
friend COMPLEX operator/(COMPLEX, COMPLEX);
private:
float Re, Im, Abs, Angle;//Datenelemente
void Umrechnung (float,float,int);
};

void Ausgabe(COMPLEX Z1, COMPLEX Z2);

****methode.cpp

#include "methode.h"
#include
#include
#include
#include

using namespace std;

COMPLEX::COMPLEX(float a, float b, int c)
{
if(c==0)
{Re=a;
Im=b;
Umrechnung(a,b,0);//(Re, Im)-> (Abs, Angle)
}
else if(c==1)
{Abs=a;
Angle=b;
Umrechnung(a,b,1);//(Abs,Angle)-> (Re, Im)
}
}
float RE(COMPLEX a){return a.Re;}
float IM(COMPLEX a){return a.Im;}
float ABS(COMPLEX a){return a.Abs;}
float ANGLE(COMPLEX a){return a.Angle;}

COMPLEX operator+ (COMPLEX Z1, COMPLEX Z2)
{return COMPLEX(Z1.Re+Z2.Re,Z1.Im+Z2.Im,0);}
COMPLEX operator- (COMPLEX Z1, COMPLEX Z2)
{return COMPLEX(Z1.Re-Z2.Re,Z1.Im-Z2.Im,0);}
COMPLEX operator* (COMPLEX Z1, COMPLEX Z2)
{return COMPLEX(Z1.Re*Z2.Re-Z1.Im*Z2.Im, Z1.Re*Z2.Im+Z1.Im*Z2.Re,0);}
COMPLEX operator/ (COMPLEX Z1, COMPLEX Z2)
{
float l;
COMPLEX Z3;
l= Z2.Re*Z2.Re+Z2.Im*Z2.Im;
if(l==0.0)
{
cout<<"\nDivision durch Null!";
Z3.Re=Z3.Im=0.0;
}
else
{
Z3.Re=(Z1.Re*Z2.Re+Z1.Im*Z2.Im)/l;
Z3.Im=(Z2.Re*Z1.Im-Z1.Re*Z2.Im)/l;
}
Z3.Umrechnung(Z3.Re, Z3.Im, 0);
return Z3;
}

void COMPLEX::ein()
{
char menu;
do
{cout<<"\n[k]artesisch oder [P]olar?->";
cin>>menu;
if(menu=='p'||menu=='P')
{
cout<<"\nBetrag ->";
cin>>Abs;
cout<<"\nWinkel in Grad ->";
cin>>Angle;
Umrechnung(Abs,Angle,1);
}
else
if(menu=='k'||menu=='K')
{cout<<"\nRealteil ->";
cin>>Re;
cout<<"\nImaginaerteil ->";
cin>>Im;
Umrechnung(Re,Im,0);
}
else cout<<"Falsche Eingabe!";
}
while(menu!='p'&&menu!='k');
}

//Umwandlung einer komplexer Zahl
void COMPLEX::Umrechnung(float a, float b, int c)
{
if(c==1)//polar-->kartesisch
{
Re=a*cos(b/180.*M_PI);
Im=a*sin(b/180.*M_PI);
}
else
if(c==0)//kartesisch-->polar
{
Abs=sqrt(a*a+b*b);
if(Re==0) Angle=90;
else Angle=atan(b/a)*(180./M_PI);
}
else cout<<"Falscher Umrechen-Parameter!!\n";
}

//Ausgabe
void COMPLEX::aus(int i)
{
if(i==0) cout<<Re<<"+"<<Im<<"j";
else
if(i==1) cout<<Abs<<"*Exp^("<<(Angle*M_PI/180.)<<")j";
else
if(i==2) cout<<Abs<<"*[cos("<<Angle<<")+jsin("<<Angle<<")]";
else cout<<"Undefinierter Ausgabe-Parameter!!!";
}

void Ausgabe(COMPLEX Z1,COMPLEX Z2)
{
COMPLEX Z3;
cout<<setiosflags(ios::fixed)
<<setiosflags(ios::showpoint)
<<setprecision(2)<<endl;
cout<<setw(6)<<"Z1"<<setw(3)<<":"<<endl;
cout<<"Kartesisch"<<setw(7);
Z1.aus(0);cout<<endl;
cout<<"Polar exponentiell"<<setw(7);
Z1.aus(1);cout<<endl;
cout<<"Polar trigonometrisch"<<setw(7);
Z1.aus(2);cout<<endl<<endl;
cout<<setw(6)<<"Z2"<<setw(3)<<":"<<endl;
cout<<"Kartesisch"<<setw(7);
Z2.aus(0);cout<<endl;
cout<<"Polar exponentiell"<<setw(7);
Z2.aus(1);cout<<endl;
cout<<"Polar trigonometrisch"<<setw(7);
Z2.aus(2);cout<<endl<<endl;

Z3=Z1+Z2;
cout<<setw(6)<<"Z1+Z2"<<setw(3)<<":"<<endl;
cout<<"Kartesisch"<<setw(7);
Z3.aus(0);cout<<endl;
cout<<"Polar exponentiell"<<setw(7);
Z3.aus(1);cout<<endl;
cout<<"Polar trigonometrisch"<<setw(7);
Z3.aus(2);cout<<endl<<endl;

Z3=Z1-Z2;
cout<<setw(5)<<"Z1-Z2"<<setw(3)<<":"<<endl;
cout<<"Kartesisch"<<setw(7);
    Z3.aus(0);cout<<endl;
    cout<<"Polar exponentiell"<<setw(7);
    Z3.aus(1);cout<<endl;
    cout<<"Polar trigonometrisch"<<setw(7);
    Z3.aus(2);cout<<endl<<endl;

Z3=Z1*Z2;
cout<<setw(5)<<"Z1*Z2"<<setw(3)<<":"<<endl;
cout<<"Kartesisch"<<setw(7);
Z3.aus(0);cout<<endl;
cout<<"Polar exponentiell"<<setw(7);
Z3.aus(1);cout<<endl;
cout<<"Polar trigonometrisch"<<setw(7);
Z3.aus(2);cout<<endl<<endl;
Z3=Z1/Z2;
cout<<setw(5)<<"Z1/Z2"<<setw(3)<<":"<<endl;
cout<<"Kartesisch"<<setw(7);
Z3.aus(0);cout<<endl;
cout<<"Polar exponentiell"<<setw(7);
Z3.aus(1);cout<<endl;
cout<<"Polar trigonometrisch"<<setw(7);
Z3.aus(2);cout<<endl;
}

pruefung.cpp

#include "methode.h"
#include
#include

using namespace std;

int main(void)
{
COMPLEX Z1,Z2,Z3;
char janein;
do{
cout<<"\n1.Wert Z1\n";
cout<<"=======";
Z1.ein();
cout<<"\n2.Wert Z2\n";
cout<<"=======";
Z2.ein();
system("cls");
Ausgabe(Z1,Z2);
cout<<"\nNochmal?[j/n]>";
cin>>janein;
}
while(toupper(janein)=='J');
return 0;
}

makefile

pruefung:pruefung.o methode.o
g++ -o pruefung pruefung.o methode.o
pruefung.o:pruefung.cpp methode.h
g++ -o pruefung pruefung.cpp
methode.o:methode.cpp methode.h
g++ -o methode methode.cpp
clean:
rm *.o pruefung

  • 写回答

2条回答 默认 最新

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!