Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:在vs2008上测试所有数据没有问题,提交后却编译失败,刚刚接触C++,麻烦大家看一下,谢谢In Reply To:Re:在vs2008上测试所有数据没有问题,提交后却编译失败,刚刚接触C++,麻烦大家看一下,谢谢 Posted by:deking at 2008-05-01 02:45:02 > #include <iostream> > #include <string> > using namespace std; > super_figure super_figure::operator =(string s) > { > *this = super_figure(s); > return *this; > } > super_figure super_figure::operator =(super_figure &s) > { > data = s.data; > symbol = s.symbol; > position = s.position; > return *this; > } > super_figure::super_figure( string s) > { > int start, i, flag = 0; > if(s.at(0) != '-'){ > symbol = '+'; > start = 0; > } > else{ > symbol = '-'; > start = 1; > } > data = ""; > for (i = start; i < s.size(); i++) > { > if(s.at(i) == '.'){ > position = i - start; > i++; > flag = 1; > } > data.push_back(s.at(i)); > } > if(!flag){ > position = s.size(); > } > } > > super_figure::super_figure(super_figure &s) > { > data = s.data; > symbol = s.symbol; > position = s.position; > } > super_figure operator*(super_figure &s1, super_figure& s2) > { > super_figure buff; > string buff1 ="", buff2 ="", buff3 = ""; > char temporary = '0', temp[10000]; > memset( temp, '0', 10000 * sizeof( char ) ); > long increase, i, j, flag = 0, add, now, lenth; > buff.data = ""; > if(s1.symbol == s2.symbol) > buff.symbol = '+'; > else > buff.symbol = '-'; > increase = ( s1.data.size() - s1.position ) + ( s2.data.size() - s2.position); > for(i = 0; i < s1.data.size(); i++){ > if(!flag && s1.data.at(i) != '0') > flag = 1; > if(flag) > buff1.push_back(s1.data.at(i)); > } > flag = 0; > for(i = 0; i < s2.data.size(); i++){ > if(!flag && s2.data.at(i) != '0') > flag = 1; > if(flag) > buff2.push_back(s2.data.at(i)); > } > for( i = buff1.size() - 1; i >= 0; i--) > buff3.push_back(buff1.at(i)); > buff1 = buff3; > buff3 = ""; > for(i = buff2.size() - 1; i >= 0; i--) > buff3.push_back(buff2.at(i)); > buff2 = buff3; > buff3 = ""; > add = 0; > for(i = 0; i < buff1.size(); i++){ > for (j = 0; j < buff2.size(); j++) > { > now = ( buff1.at(i) - '0' ) * (buff2.at(j) - '0') + add + temp[i+j] -'0'; > add = now / 10; > now %= 10; > temp[i+j] = now + '0'; > } > temp[i+j] = temp[i+j] + add; > if( j != buff2.size() || i != buff1.size() - 1 ) > add = 0; > } > if(add == 0) > lenth = i + j - 1; > else > lenth = i + j; > if(increase >= lenth) > lenth = lenth + (increase - lenth ) + 1; > else > buff.position = lenth - increase ; > i = lenth - 1; > while (i >= 0){ > buff.data.push_back(temp[i]); > i--; > } > return buff; > } > super_figure& super_figure::operator*=(super_figure& s) > { > *this = super_figure(*this) * s; > return *this; > } > super_figure Evolution(super_figure&s, int k) > { > super_figure buff("1"); > while( k--){ > buff *= s; > } > return buff; > } > ostream& operator<<(ostream&os, super_figure&figure) > { > int i; > if(figure.symbol == '-') > os << "-"; > if(figure.data.size() == figure.position) > os << figure.data; > else > { > int flag = 0, i, j, k; > for( j = figure.data.size() - 1; j >= figure.position; j--){ > if( figure.data.at(j) != '0') > break; > } > if(j == figure.position - 1){ > for(i = 0; i < figure.position; i++) > os << figure.data.at(i); > } > else{ > if(figure.data.at(0) != '0') > { > for( i = 0; i <= figure.position; i++) > os <<figure.data.at(i); > } > os << "."; > for( i = figure.position; i <= j; i++ ) > os << figure.data.at(i); > } > os << endl; > return os; > } > } > istream& operator>>(istream &os, super_figure& figure) > { > string buff; > os >> buff; > figure = buff; > return os; > } > int main() > { > super_figure s, j; > int k; > while(cin >> s >> k) > { > j = Evolution(s, k); > cout << j << endl; > } > return 0; > } > Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator