zoukankan      html  css  js  c++  java
  • 进制数相加 char* sum(int n,char* num1,char* num2)

    进制数相加 char* sum(int n,char* num1,char* num2)

    功能:

    第一个参数n 代表多少进制,最大就是36进制,从0到9,然后a到z代表10到35.

    char* num1 和char* num2 分别接受两个数字字符串,然后相加得到的结果返回

    #include<iostream>
    using namespace std;
    //n 表示进制数
    //a 表示操作数1
    //b 表示操作数2
    //jy 表示进位数
    //jy1 是否进位 
    char sum1(int n,char a,char b,int jy,int* jy1)
    {
        int num1=0;
        int num2=0;
        if(isdigit(a)) num1=a-'0';
        else num1=a-'a'+10;
        if(isdigit(b)) num2=b-'0';
        else num2=b-'a'+10;
        if(num1+num2+jy>n)
        {
        
            int temp=num1+num2+jy-n;
            *jy1=1;
            if(temp<10)
            {
                return '0'+temp;
              
            }
            else
            {
                
                return 'a'+temp-10;
                
            }
        }
        else
        {
           
            int temp=num1+num2+jy;
            *jy1=0;
            if(temp<10)
            {
                return '0'+temp;
              
            }
            else
            {
                
                return 'a'+temp-10;
                
            }    
        }
    }
    char* sum(int n,char* num1,char* num2)
    {
        int num1_len= strlen(num1);
        int num2_len=strlen(num2);
        int max=num1_len>num2_len?num1_len:num2_len;
        int jy=0;
        char *he=new char[max+2];
        memset(he,0,max+2);
        for(int i=0;i<max+1;i++)
        {
            char a;
            char b;
            if(num1_len-1-i>=0)
            {
                 a=num1[num1_len-1-i];
                
                
            }
            else{
                a='0';
            }
            if(num2_len-1-i>=0)
            {
               b=num2[num2_len-1-i]; 
            }
            else
            {
                b='0';
            }
            he[i]=sum1(n,a,b,jy,&jy);
            
        } 
        return he;
    } 
    int main()
    {
        char* num1=new char[100];
        char* num2=new char[100];
        int n;
        while(cin>>num1>>num2>>n)
        {
            char* p=sum(n,num1,num2);
            for(int i=0;i<strlen(p);i++)
             {
               if(p[strlen(p)-1-i]=='0')continue;
                 cout<<p[strlen(p)-1-i];
            }
        }
    
        
    
        getwchar();
        return 0;
    }
  • 相关阅读:
    基于ExtAspNet的开源项目 Ext4JSLint
    ExtAspNet应用技巧(九) Grid导出为Excel文件
    ExtAspNet应用技巧(十二) 系统登录
    ExtAspNet v2.0.7
    原来最可怕的不是工作,是无聊
    获取Word文档的作者和主题
    《可变范围规约》
    用IronPython加载,写入文本文件
    IronPython中没有System.Data命名空间?
    《敏捷建模》读后感
  • 原文地址:https://www.cnblogs.com/Small-Life/p/4009327.html
Copyright © 2011-2022 走看看