#1390: 到底哪裡有錯!?


night_kaze1204 (帳號不動不代表人沒在動)

學校 : 臺北市立成功高級中學
編號 : 4239
來源 : [163.32.93.32]
最後登入時間 :
2010-05-23 10:04:46
d137. 绝对值 -- liouzhou_101 | From: [219.84.255.4] | 發表日期 : 2009-02-14 12:20

請大家幫我看一下哪裡有錯

 

#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 ;
}

 
ZeroJudge Forum