初学菜鸟,第一次用类写程序,试了大概5个小时==终于写出来了!

C++ noj 大数加法 用类实现

#include <bits/stdc++.h>

#include <iostream>

#include <string>

using namespace std;

class hugenum{

private:

    char a[100];

public:

    int a1[100];

    int j=0;

    hugenum(char a[],int j){

        memset(a1);trans(a,a1);if(a[0]=='-')j=j-1;

        reverse(a1,j);

    }

    void memset(int a1[]){for(int i=0;i<100;i++)a1[i]=0;};

    void trans(char a[],int a1[]){

        if(a[0]=='-')for(int i=1,n=0;a[i]!='\0';i++,n++){a1[n]=-1*(a[i]-48);}

        else for(int i=0;a[i]!='\0';i++)a1[i]=a[i]-48;

    }

    void reverse(int a1[],int j){

        int i=0;

        char x;

    while(i<j){

        x=a1[i];a1[i]=a1[j];a1[j]=x;

        i++;

        j--;

    }

    }

};

int main(){

    char m[100],n[100];

    cin>>m>>n;

    int j1=strlen(m)-1;int j2=strlen(n)-1;

    int c[101];

    memset(c,0,101);

    hugenum fir(m,j1),sec(n,j2);

    if(m[0]=='-')j1=j1-1;if(n[0]=='-')j2=j2-1;

    for(int i=0;i<=j1&&i<=j2;i++){

        c[i]=fir.a1[i]+sec.a1[i];

        if(c[i]>=10){

            c[i]=c[i]-10;

            fir.a1[i+1]=fir.a1[i+1]+1;

        }

    }

    int i=0,j=0;

    for(i=0;c[i]!=0;i++)j++;

    i=0;int p=j;

    while(i<j){

        swap(c[i],c[j]);

        i++;

        j--;

    }

    for(int i=1;i<=p;i++)cout<<c[i];

    cout<<endl;

    return 0;

}

相关文章:

  • 2021-06-22
  • 2022-03-08
  • 2022-02-15
  • 2021-05-16
  • 2022-12-23
  • 2021-11-05
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-25
相关资源
相似解决方案