Exemple #1
0
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;
}
Exemple #2
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;
}
Exemple #3
0
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;
}
Exemple #4
0
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;
}