請大家幫我看一下哪裡有錯
#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std ;
class complex
{
public :
double r,i ;
complex (string str)
{
int sl=str.length(),D=0,num=0 ; // strl 字串長度 D 判別開關 num 實虛部
for (int i=0 ; i<=sl ; i++)
{
if (i==sl) //當遇到沒有虛部時使用
if (num)
r=( (D)? -num : num ) ;
if (str[i]=='i')
{
if (num==0)
num=1 ;
i= ( (D)? -num : num ) ;
num=0 ;
}
else if (isdigit(str[i]))
num=num*10 + str[i] - '0' ;
else if (str[i]=='+' || str[i]=='-')
{
if (num!=0)
{
r=((D)? -num : num) ;
num=0 ;
}
if (str[i]=='-')
D=1 ;
}
}
}
double abs()
{
return sqrt(r*r+i*i) ;
}
}
;
int main()
{
string str ;
while (cin >> str)
{
complex ok(str);
cout.setf(ios::fixed);
cout.precision(3);
cout << ok.abs() << endl;
}
system("pause") ;
return 0 ;
}