码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-10-07 17:14:03      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   ar   for   sp   div   

进制数相加 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;
}

 

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

标签:style   blog   color   io   os   ar   for   sp   div   

原文地址:http://www.cnblogs.com/Small-Life/p/4009327.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!