int main(int argc, char const *argv[]) { List tegut; initializeList(&tegut); std::cout << "Ausgabe first: " << tegut.first << std::endl; std::cout << "Ausgabe last: " << tegut.last << std::endl; for (int i = 0; i < 3; i++) { insert0(&tegut, insertArtikel()); // std::cout << "Ausgabe first: " << tegut.first << std::endl; // std::cout << "Ausgabe last: " << tegut.last << std::endl; } insertLast(&tegut, insertArtikel()); insertPos(&tegut, insertArtikel(), 2); outputList(&tegut); std::cout << "Nach remove0:" << std::endl; remove0(&tegut); outputList(&tegut); std::cout << "Nach removePos:" << std::endl; removePos(&tegut, 1); outputList(&tegut); return 0; }
superint superint::operator /(superint x)// /重载 { superint div,t; t.strint=superint::strint; int m1=1,m2=1; int n,n1,n2; n1=t.strint.length(); n2=x.strint.length(); //倒置字符串 convert(t.strint); convert(x.strint); //检测是否为负数 if(t.strint[n1-1]==45) { n1--; m1=-1; t.strint.resize(n1);//消除负号 } if(x.strint[n2-1]==45) { n2--; m2=-1; x.strint.resize(n2);//消除负号 } //倒置字符串 convert(t.strint); convert(x.strint); //符号相同 if(t<x) div=0; if(t>=x) { int t1,t2; superint tem; n=n2-1; tem.strint=cutcp(t.strint,0,n-1); do { tem.strint+=t.strint[n]; for(int i=0;i<=9;i++) { t1=i; t2=i+1; if(((x*t1)<=tem)&&((x*t2)>tem)) break; } div.strint+=int_to_char(t1); tem=tem-x*t1; } while(++n<n1); convert(div.strint); remove0(div.strint); convert(div.strint); } //符号相异 if(m1!=m2) div=-div; return div; }
superint superint::operator *(superint x)// *重载 { superint mul=0,t; t.strint=superint::strint; int mark=0,m1=1,m2=1; int n1,n2,n; n1=t.strint.length(); n2=x.strint.length(); //倒置字符串 convert(t.strint); convert(x.strint); //检测是否为负数 if(t.strint[n1-1]==45) { n1--; m1=-1; t.strint.resize(n1);//消除负号 } if(x.strint[n2-1]==45) { n2--; m2=-1; x.strint.resize(n2);//消除负号 } n=n1>n2?n1:n2; //补齐字符串 if(n==n1) { for(int i=0;i<n1-n2;i++) x.strint+="0"; } else { for(int i=0;i<n2-n1;i++) t.strint+="0"; } //符号相同 int tem; superint tm; for(int j=0;j<n;j++) { mark=0; tm.strint.clear(); for(int k=0;k<j;k++) tm.strint+="0"; for(int i=0;i<n;i++) { tem=char_to_int(t.strint[j])*char_to_int(x.strint[i])+mark; mark=tem/10; tem=tem%10; tm.strint+=int_to_char(tem); } tm.strint+=int_to_char(mark); remove0(tm.strint); convert(tm.strint); mul=mul+tm; } //符号相异 if(m1!=m2) mul=(-mul); return mul; }
superint superint::operator -(superint x)// -重载 { superint sub; superint t; t.strint=superint::strint; int mark=0,m1=1,m2=1; int n1,n2,n; n1=t.strint.length(); n2=x.strint.length(); //倒置字符串 convert(t.strint); convert(x.strint); //检测是否为负数 if(t.strint[n1-1]==45) { n1--; m1=-1; t.strint.resize(n1);//消除负号 } if(x.strint[n2-1]==45) { n2--; m2=-1; x.strint.resize(n2);//消除负号 } n=n1>n2?n1:n2; //补齐字符串 if(n==n1) { for(int i=0;i<n1-n2;i++) x.strint+="0"; } else { for(int i=0;i<n2-n1;i++) t.strint+="0"; } //符号相同 if(m1==m2) { superint subx("1"); int x1,x2,tem; for(int i=0;i<n;i++) { x1=char_to_int(t.strint[i]); x2=char_to_int(x.strint[i]); tem=x1-x2+mark; if(tem<0) { mark=-1; tem+=10; } else mark=0; sub.strint+=int_to_char(tem); } remove0(sub.strint); convert(sub.strint); if(mark==-1) { int ti=sub.strint.length(); for(int i=0;i<ti;i++) subx.strint+="0"; sub=subx-sub; sub=-sub; } if(m1+m2==-2) sub=-sub; } //符号相异 convert(t.strint); convert(x.strint); if(m1>m2) sub=t+x; if(m1<m2) { sub=t+x; sub=-sub; } return sub; }